Dường như không có một phương pháp nào tốt nhất.
(1) Tệp tiêu chuẩn config/routes.rb
dường như gợi ý rằng trang gốc (hoặc trang chủ / trang chào mừng) nên được xử lý welcome#index
. Nếu bạn được hướng dẫn bởi điều đó, thì để tạo welcome#index
bộ điều khiển / hành động tương ứng , bạn có thể sử dụng lệnh sau:
rails generate controller Welcome index
Sau đó, config/routes.rb
bạn có thể xóa tuyến đường GET ( get "welcome/index"
) được trình tạo tự động thêm vào và đặt tuyến gốc root 'welcome#index'
(hoặc root :to => 'welcome#index'
trong Rails < 4
) ở đầu tệp, vì nó có thể sẽ là tuyến phổ biến nhất của bạn và nên được khớp trước.
Cũng nhớ xóa public/index.html
trong Rails < 4
.
(2) Các của Ruby on Rails chính thức định tuyến hướng dẫn sử dụng PagesController
. Nó thực sự gợi ý pages#main
, mặc dù đối với tôi, nó có ý nghĩa hơn khi đi cùng pages#home
(vì "trang chủ" là thuật ngữ / khái niệm phổ biến). Thêm vào đó, bộ điều khiển này có thể xử lý khác trang định hướng hành động như pages#about
, pages#contact
, pages#terms
, pages#privacy
vv
(3) Các Ruby on Rails Hướng dẫn , đi với static_pages#home
và static_pages#help
vv, mặc dù tôi không thích ý tưởng về biểu thị điều khiển này với "tĩnh". Các trang này vẫn có thể có một số khía cạnh động đối với chúng, đặc biệt là trang chủ!
(4) Mặc dù không thảo luận về cách xử lý trang chủ , RailsCast # 117 trên Trang bán tĩnh đề xuất thêm một bộ phương pháp khác để hiển thị -chỉ tài nguyên.
Tôi cảm thấy ưu tiên cho 1 và / hoặc 2. Với kịch bản "và", bạn có thể sử dụng chỉ mục # chào mừng và các trang # về, v.v., trong khi với kịch bản "hoặc", bạn có thể sử dụng các trang # trang chủ, các trang # về, vv Nếu buộc phải chọn, tôi sẽ chọn tùy chọn 2 chỉ vì bạn kết thúc với ít mã hơn. Và btw, 2 và 3 khá giống nhau, ngoại trừ từ "tĩnh".
@posts = Posts.find( ...
hoặc@posts = Posts.all
hoặc một cái gì đó tương tự trong bộ điều khiển / hành động mới này sẽ không bị coi là vi phạm các nguyên tắc của DRY, mặc dù mã như vậy có thể đã xuất hiện trong hành độngPost
của bộ điều khiểnindex
? Có cách nào tốt hơn (mô-đun hơn), sử dụng mã đã được viết sẵnPost
choindex
hành động của bộ điều khiển không?