Rails 3中的嵌套资源链接

时间:2012-01-12 12:18:13

标签: ruby-on-rails resources

我有控制器工作"在上下文"一些模型。示例:控制器UsersController和InvoicesController可以在公司模型的上下文中工作 - 它们显示某些公司的用户和发票。我使用嵌套资源作为路由解决方案,并使用

之类的URL

http://localhost:3000/companies/8/users

在索引视图上建立链接的最简单灵活的方法是什么,这将反映上下文?

这意味着 new_user_path或 new_company_user_path 将根据上下文创建。我不想使用很多if ... then。 有没有解决方案?

2 个答案:

答案 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都没有。我不是我的开发组合,所以无法测试它。