我有一个Reports控制器和两种类型的用户:公司和客户。每个页面在查看主要的“报告”页面时都会看到截然不同的页面(即我通常称之为索引)。
因为这些页面不同但是各个用户在报告中的主窗口,以RESTful方式组织这些页面的最佳方式是什么?
到目前为止,我一直在做索引(针对公司)和custindex(针对客户)。还有更好的方法吗?
注意:这些页面有两个以上的简单差异 - 否则一些基于用户类型的简单if
或case
语句就足够了。
答案 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)
我不知道它是好还是坏,但你也可以在每个控制器上有一个叫做“报告”的方法。所以它将分别处理每一个。
所以,请在路线文件中轻松处理。
只是另一个想法。