我们有一个网站,我们有一个后端管理界面,和一个前端显示我们的信息。我们正在使用设计来保护身份验证。
后端应该允许对我们的模型对象进行普通的CRUD类型编辑。视图和布局也与前端完全不同。在Rails 3中实现这一点的最佳实践是什么?我们的两个方法是:
- admin视图文件夹包含所有视图特定代码,控制器文件夹中的admin文件夹包含所有控制admin特定访问的控制器。
- 具有一组视图和控制器的条件逻辑系统,使用if语句检查用户是否处于管理模式。
哪一个是更推荐的,或者如果有其他我们错过的方法,请告诉我
第一个解决方案更好,但是对于这些情况,创建了namespaces
,最佳实践是在需要区分用户站点和管理区域时使用名称空间。点击这里阅读更多信息
你的目录结构应该是这样的:
controllers/
|--admin/
|--posts_controller.rb
在你的路由中,你把所有你需要的东西放在admin命名空间中:
namespace :admin do
resources :posts, :comments
end
您的控制器应该有一个admin
文件夹,并且在admin区域中的控制器看起来像:
class Admin::PostsController < ApplicationController
end
你还应该在你的视图中有一个admin
文件夹,在那里你放置各自的视图:
views/
|--admin/
|--posts/
|--index.html.erb
|--...
您也可以命名您的模型,但这取决于您的需要,当您需要使用相同的名称有不同的模型时,这是很好的。例如,如果您需要为管理用户提供不同的表,为普通用户提供不同的表。我个人不会使用模型命名空间,只有在非常合理的情况下。
第二个选项可能会让人很头疼,你会迷失在if语句中,我完全不建议这么做