Tôi đã tạo một số bộ điều khiển & chế độ xem dưới tên miền 'quản trị', nhưng chúng vẫn đang kéo từ bố cục ứng dụng. làm cách nào tôi có thể tạo bố cục áp dụng cho tất cả các chế độ xem trong các tuyến đường không gian tên và vẫn sử dụng bố cục hiện tại cho các trang khác?đường ray 3: bố trí cho các tuyến đường có tên
Trả lời
Nói chung, Rails sẽ sử dụng bố cục ứng dụng nếu không có bố cục phù hợp với bộ điều khiển. Ví dụ, nếu bạn có một PeopleController, Rails sẽ tìm các layout/people.html.erb và nếu nó không tìm thấy điều đó, application.html.erb.
Bạn có thể chỉ định rõ bố cục cụ thể nếu bạn muốn ghi đè quy ước này.
class Admin::PeopleController
layout 'some_layout'
end
Bộ điều khiển đó sẽ sử dụng some_layout.html.erb thay vì tìm kiếm people.html.erb và application.html.erb.
Nhưng đây có thể là cách tốt hơn nếu bạn đang tìm cách nhóm mọi thứ: Nếu bạn có một AdminController cơ sở kế thừa từ ApplicationController, bạn có thể có, Admin, PersonController kế thừa từ AdminController và nó sẽ kế thừa bố cục quản trị.
Tôi không biết các chi tiết cụ thể của mã của bạn, nhưng bạn có thể có:
class AdminController
def show
#render a template linking to all the admin stuff
end
end
app/controllers/admin/people_controller.rb:
class Admin::PeopleController < AdminController
#your awesome restful actions in here!
end
views/layouts/admin.html.erb:
Hello from the Admin!
<%= yield %>
Một điều cần nhận thức được rằng Quản trị :: PeopleController sẽ thừa hưởng bất kỳ hành động mà AdminController đã xác định (cũng giống như bất cứ điều gì được định nghĩa trong ApplicationController sẽ có sẵn trong tất cả các lớp con). Đây không phải là vấn đề thường gặp vì bạn có thể sẽ ghi đè lên các phương thức, nhưng chỉ để ý thức về nó. Nếu bạn không có AdminController, bạn có thể tạo một hành động không có hành động chỉ vì mục đích của bố cục.
Tôi thường có một lớp bộ điều khiển cơ sở trong không gian tên của tôi, và sau đó có tất cả các bộ điều khiển trong không gian tên đó kế thừa từ nó. Điều đó cho phép tôi đặt chung, không gian tên mã cụ thể trong cơ sở và tất cả các bộ điều khiển trong không gian tên đó có thể tận dụng lợi thế. Ví dụ:
class Admin::BaseController < ApplicationController
layout 'admin'
before_filter :require_admin_user
end
class Admin::WidgetsController < Admin::BaseController
# inherits the 'admin' layout and requires an admin user
end
Tôi nghĩ điều này thanh lịch và có cấu trúc hơn câu trả lời được chấp nhận. Có cách nào để làm cho tất cả các bộ điều khiển được tạo ra bởi lệnh 'rails g' để kế thừa từ' Admin :: BaseController'? – berezovskyi
Bộ điều khiển cơ sở này nên đi đâu? – Sebastialonso
Lớp điều khiển là Admin :: BaseController, do đó Rails giả sử nó sẽ được định nghĩa trong tệp base_controller.rb trong thư mục controllers/admin. – IAmNaN
- 1. đường ray 3 tuyến đường: tuyến đường tự động khác nhau cho mô hình
- 2. ray 3 tuyến đường bí danh
- 3. Tuyến đường và tuyến đường ray Ember
- 4. Tuyến đường ray có ngày
- 5. Rails 3: tài sản đường ống + nhiều bố trí
- 6. Đường ray 3: định tuyến tài nguyên cho một tên khác
- 7. Đường ray 3 URL không có tên bộ điều khiển
- 8. Đường ray 3 tuyến nối thêm _index để định tuyến tên
- 9. Rails 3: tuyến đường subdomain
- 10. Đường ray: Định tuyến chính xác cho các tài nguyên không có tên
- 11. Lỗi định tuyến đường ray? 'Không có con đường trận'
- 12. tại sao không có tên đường dẫn cho các tuyến đường tùy chỉnh trong Rails
- 13. default_scope trong đường ray 3
- 14. Đường ray tuyến tính logic
- 15. Observe_field trong đường ray 3
- 16. ASP.net MVC 3 tuyến đường cho các tập tin jpg
- 17. tài nguyên dấu gạch ngang trong đường ray 3 tuyến đường
- 18. trong đường ray, không thể ghi đè lên tên tệp nội dung bố trí
- 19. ray 3: Cách tạo đường dẫn?
- 20. nếu tuyên bố trong đường ray
- 21. Tiền tố đường dẫn chuẩn bị cho tất cả các tuyến đường ray
- 22. nguồn tài nguyên và đường ray tài nguyên 3
- 23. Tại sao đường ray không tạo trình trợ giúp tuyến đường cho tuyến đường 'phù hợp' của tôi?
- 24. Kết hợp YUI 3 trong đường ray
- 25. Bố cục động với bố cục đường ray
- 26. Định dạng lỗi.full_messages trong đường ray 3
- 27. Rspec và các tuyến đường được đặt tên
- 28. Đường ray 3.x Chiều dài TLD
- 29. Đường ray asset_host 3 ở đâu?
- 30. Định tuyến đường ray (root: to => ...)
Lớp 'AdminController' nằm trong' app/controllers' hoặc 'app/controllers/admin'? – jdscosta91
dưới 'ứng dụng/bộ điều khiển ' – Damien
Tôi đang thử điều này, và có vẻ như nó hoạt động, nhưng tôi bị mất các kiểu và chức năng được đưa ra bởi các khung công tác như Bootstrap hoặc Semantic-UI. Bất kỳ ý tưởng làm thế nào để giải quyết điều này? – Sebastialonso