Restful routing - 两个用户看到执行相同功能的不同页面

时间:2011-04-19 09:51:44

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

我有一个Reports控制器和两种类型的用户:公司和客户。每个页面在查看主要的“报告”页面时都会看到截然不同的页面(即我通常称之为索引)。

因为这些页面不同但是各个用户在报告中的主窗口,以RESTful方式组织这些页面的最佳方式是什么?

到目前为止,我一直在做索引(针对公司)和custindex(针对客户)。还有更好的方法吗?

注意:这些页面有两个以上的简单差异 - 否则一些基于用户类型的简单ifcase语句就足够了。

3 个答案:

答案 0 :(得分:1)

我会避免触摸控制器并在部分视图中执行此操作:

#in app/views/users/index.html.erb
<common html, if any>
<%= render :partial => @user.kind #or whatever method you use to distinguis between them %>
<more common html, if any>

现在你只需要在该文件夹中使用“_customer.html.erb”和“_company.html.erb”部分。

答案 1 :(得分:0)

您可以检查控制器中的用户类型:

def index
  ...
  template = (@type == 'company') ? 'reports/index.html.erb' : 'reports/custindex.html.erb'
  render :template => template
end

意味着您将拥有两个不同的html.erb文件,但仍然只有一个“索引”操作,并根据用户类型呈现模板

答案 2 :(得分:0)

我不知道它是好还是坏,但你也可以在每个控制器上有一个叫做“报告”的方法。所以它将分别处理每一个。

所以,请在路线文件中轻松处理。

只是另一个想法。