Rails中双布局的最佳实践3

时间:2013-06-03 21:16:20

标签: ruby-on-rails ruby ruby-on-rails-3

我有一个rails 3应用程序,它有两个不同的布局。一个是针对最终用户的,另一个是用于管理应用程序的管理控制台。

这通常很容易处理,因为我可以定义一个控制器来使用1个布局。这适用于大多数设置,因为它们不涉及最终用户。但我的一些模型会。例如,管理员编辑用户配置文件与用户。为了使这项工作,我应该为模型重复控制器吗?一个用于管理控制台,一个用于用户?好像我把DRY扔出了窗外。

提前感谢您的任何反馈。

2 个答案:

答案 0 :(得分:1)

在我看来,管理员可能与用户做的事情不同于最终用户会做的事情,因此不同的控制器可能不会完全解除。

但是,如果它们完全相同并且您只想拥有不同的布局,那么您可以根据当前用户设置布局。像这样的东西会起作用:

layout :determine_layout

def determine_layout
  return 'admin' if current_user && current_user.admin?
  'application'
end

答案 1 :(得分:1)

您无需复制代码。只需在您的应用程序中添加一个授权层,您就可以在现有代码中创建这些功能。 为了达到这个目的,我会向你推荐CanCan gem:

  

CanCan是Ruby on Rails的授权库,它限制了它   允许给定用户访问哪些资源。所有权限都是   在单个位置(Ability类)中定义,而不是重复   跨控制器,视图和数据库查询。

您可以在project page上查看更多内容并查看示例,还有一个Railscast