我们有一个网站,我们有一个后端管理界面,以及一个显示我们信息的前端.我们正在使用Devise来保护身份验证.
后端应该允许我们的模型对象的正常CRUD类型编辑.视图和布局也与前端完全不同.在Rails 3中实现这一点的最佳实践是什么?
我们的两种方法是:
>管理视图文件夹包含所有视图特定代码,以及控制器文件夹中的管理文件夹包含控制管理员特定访问的所有控制器.
>具有一组视图和控制器的条件逻辑系统,if语句检查用户是否处于管理模式.
哪个更推荐,或者如果我们错过了另一种方法,请告诉我.
解决方法
第一种解决方案更好,但是对于这些情况创建了命名空间,最佳实践是在需要用户站点和管理区域之间的相关区分时使用命名空间.阅读更多关于它
here
您的目录结构应如下所示:
controllers/ |--admin/ |--posts_controller.rb
在您的路线中,您将所需的一切放入管理员命名空间:
namespace :admin do resources :posts,:comments end
您的控制器应该有一个管理员文件夹,管理区域中的控制器将如下所示:
class Admin::PostsController < ApplicationController end
您还应该在视图中有一个admin文件夹,您可以在其中放置相应的视图:
views/ |--admin/ |--posts/ |--index.html.erb |--...
您也可以命名模型,但这取决于您的需求,当您需要具有相同名称的不同模型时,这是很好的.例如,如果管理员用户需要不同的表,普通用户需要不同的表.我个人不会使用模型命名空间,只是在非常合理的情况下.
我认为第二种选择会引起很多麻烦,你会在if语句中丢失,我根本不建议这样做.