【问题标题】:Change the name of parent :parent_id parameter in Routing resources for Rails4在 Rails4 的路由资源中更改父 :parent_id 参数的名称
【发布时间】:2015-08-19 23:50:25
【问题描述】:
我可以使用in this way 更改路由中的 :id 参数的名称,但这可以更改嵌套资源的参数,如果我有的话
resources :companies, param: :company_id do
resources :shares, only[:index]
end
这将生成类似的路线
/companies/:company_company_id/shares
这是错误的,我想要这样的路线
/companies/:company_id/shares
我需要做什么?
【问题讨论】:
标签:
ruby-on-rails-4
routes
【解决方案1】:
我以前遇到过这种情况,并得到了以下解决方法......虽然它很难看,但我还没有找到更好的方法。
更改:
resources :companies, param: :company_id do
resources :shares, only: [:index]
end
收件人:
(注意空白only: [])
resources :companies, param: :company_id
resources :companies, only: [], param: :id do
resources :shares, only: [:index]
end
现在,当您运行 rake routes 时,您会看到正确的:
/companies/:company_id/shares(.:format)
除了所有其他 companies 端点:
/companies(.:format)
/companies(.:format)
/companies/new(.:format)
/companies/:company_id/edit(.:format)
/companies/:company_id(.:format)
/companies/:company_id(.:format)
/companies/:company_id(.:format)
/companies/:company_id(.:format)
全部保持相同的:company_id 参数名称。
【解决方案2】:
更干净的方法是使用member
resources :companies, param: :company_id do
member do
resources :shares, only[:index]
end
end