Rails:我应该在视图或控制器中处理渲染逻辑吗?

时间:2012-12-20 16:48:43

标签: ruby-on-rails model-view-controller

我的Rails应用/索引路径应该向登录用户显示一个页面,向管理员用户显示完全不同的页面,对于未登录的用户应该显示完全不同的页面。

所以,一个控制器(HomeController),一个动作(索引),三个视图。

我可以通过两种方式实现这一点:

  1. if条款插入views/home/index.html.erb,使其做正确的事。
  2. 以某种方式将条件逻辑放入控制器(让控制器找出用户是谁),然后相应地呈现不同的布局,如{{3}中 2.2.12查找布局中所述}。
  3. 我强烈认为后一种解决方案是正确的。但我不确定如何实现它,用户控制器是一个完全不同的控制器。我的家庭控制器如何找出当前用户是谁来决定要呈现的视图?

1 个答案:

答案 0 :(得分:1)

您可以访问所有控制器中的current_user对象,以检查用户是否已登录。我们也可以通过

从current_user对象获取用户角色
  

current_user.role_name

您可以传递此角色名称以将部分渲染为文件名(保留不同的文件)。