2011-09-16 48 views
7

我们有一个网站,我们有一个后台管理界面和一个显示我们信息的前台。我们正在使用Devise来确保身份验证。后台管理系统安装的Rails最佳实践?

后端应允许我们的模型对象进行正常的CRUD类型编辑。视图和布局也与前端完全不同。在Rails 3中实现这一点的最佳实践是什么?

我们两种方法是:

  1. 一个管理视图文件夹房屋所有查看特定代码,以及在控制器中的文件夹的房屋控制管理特定接入所有控制器的管理文件夹。
  2. 具有一组视图和控制器的条件逻辑系统,用if语句检查用户是否处于管理模式。

哪个更值得推荐,或者如果有其他方法我们错过了,请让我知道。

回答

15

第一个解决方案是更好的,但是对于这些情况创建namespaces和最好的做法是与命名空间去的时候,你需要用户现场管理区域之间的相关差异。了解更多关于它here

你的目录结构应该是这样的:

controllers/ 
    |--admin/ 
     |--posts_controller.rb 

在你的路由你把你需要到管理员命名空间的一切:

namespace :admin do 
    resources :posts, :comments 
end 

你的控制器应该有一个admin文件夹,并且管理区域中的控制器将如下所示:

class Admin::PostsController < ApplicationController 
end 

你也应该有一个admin夹在你的意见,你把各自的观点:

views/ 
    |--admin/ 
     |--posts/ 
      |--index.html.erb 
      |--... 

您也可以命名空间的车型,但它取决于你的需求,这是件好事,当你需要有不同同名的模型。例如,如果您需要管理员用户的不同表格,而普通用户需要不同的表格。就个人而言,我不会使用模型命名空间,只是在非常合理的情况下。

第二种选择我认为会引起很多头痛,你会在if语句中丢失,我根本不建议。