我有控制器工作"在上下文"一些模型。示例:控制器UsersController和InvoicesController可以在公司模型的上下文中工作 - 它们显示某些公司的用户和发票。我使用嵌套资源作为路由解决方案,并使用
之类的URLhttp://localhost:3000/companies/8/users
在索引视图上建立链接的最简单灵活的方法是什么,这将反映上下文?
这意味着 new_user_path或 new_company_user_path 将根据上下文创建。我不想使用很多if ... then。 有没有解决方案?
答案 0 :(得分:1)
如果没有任何开关,你就不会离开,但你可以写一个助手,至少让它远离你的视图代码。
我建议你看一下Rails中的url_for
帮助器,并在这样的帮助器中使用它:
def conditional_path(action)
if (params[:company_id]
url_for(:controller => 'users', :action => action, :company_id => params[:company_id])
else
url_for(:controller => 'users', :action => action, :invoice_id => params[:invoide_id])
end
end
像这样的东西,你可以随心所欲地使用你的帮手
答案 1 :(得分:0)
如果我理解正确,你可以使用数组路径保持简洁:
= link_to 'Whatever', [:new, @company, @account, @user]
如果@company存在,你将获得new_company_user_path,如果@account存在new_account_user_path,或者如果new_account_path都没有。我不是我的开发组合,所以无法测试它。