Rails 中的管理界面
我有一个管理控制器位于 controllers/admin/admin_controller.rb
我还有一个页面控制器位于 controllers/admin/pages_controller.rb
pages_controller.rb
继承自 admin_controller.rb
在routes.rb中,我有一个管理命名空间,如下所示:
map.namespace :admin do |admin|
admin.resources :pages
end
- 我希望管理员在
pages_controller.rb
中具有基本的CRUD功能(我知道如何做到这一点) - 我想要
index
和show
方法可供前端用户使用 - 我希望 show 和 index 操作使用单独的视图,但使用相同的代码。
问题:
- 我应该为前端创建一个新的
pages_controller
,还是共享方法index
和show
? - 如果共享,我将如何根据网址是
/admin/pages
还是/pages
显示单独的视图 - 如果共享,我应该放置
pages_controller
在/controllers/admin
(现在的位置)还是在/controllers
中?
非常感谢。
I have an admin controller located in controllers/admin/admin_controller.rb
I also have a pages controller located in controllers/admin/pages_controller.rb
pages_controller.rb
inherits from admin_controller.rb
in routes.rb, I have an admin namespace as such:
map.namespace :admin do |admin|
admin.resources :pages
end
- I want the admin have basic CRUD functionality in
pages_controller.rb
(I know how to do that) - I want the
index
andshow
methods to be available to front-end users - I would like the show and index actions to use separate views, but the same code.
Questions:
- Should I create a new
pages_controller
for the front-end, or share the methodsindex
andshow
? - If share, how would I display separate views depending on whether the url is
/admin/pages
or/pages
- If share, should I place
pages_controller
in/controllers/admin
(where it is now) or just in/controllers
?
Thank you very much.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
我会把它们分开。尽管逻辑现在可能相同,但它们实际上是两个不同的东西。将它们分开将有助于您提高安全性,并允许您在必要时进行更改,例如,您可以决定在加载页面时管理查询还应该:包括其他内容等。在路线中,您可以添加:
您的意愿和视图对于每一对操作/控制器,例如,一个在 view/admin/pages 中,一个在 /view/pages 中。如果这两个是重复的代码,请将其提取到部分代码中并从两者中渲染它们。
I would keep them separate. Although the logic maybe the same now they are in effect two different things. Keeping them separate will help you with security and allow you to make changes later on if necessary, for example you may decide when loading a page the admin query should also :include something else etc. In the routes you can add:
Your will a views for each action/controller pair, e.g. one in view/admin/pages and one in the /view/pages. If these two are duplicating code, extract it into partials and render them from both.