Asn*_*tta 6 routes ruby-on-rails-4
我可以用这种方式更改路由中的:id参数的名称,但这可以更改嵌套资源的参数,就像我有
resources :companies, param: :company_id do
resources :shares, only[:index]
end
Run Code Online (Sandbox Code Playgroud)
这会产生像这样的路线
/companies/:company_company_id/shares
Run Code Online (Sandbox Code Playgroud)
哪个错了我想要这样的路线
/companies/:company_id/shares
Run Code Online (Sandbox Code Playgroud)
我需要做什么?
更干净的方法是使用member
resources :companies, param: :company_id do
member do
resources :shares, only[:index]
end
end
Run Code Online (Sandbox Code Playgroud)
我以前经历过这个问题,并通过下面的方法来解决这个问题......虽然它很丑陋,但我还没有找到更好的方法。
改变:
resources :companies, param: :company_id do
resources :shares, only: [:index]
end
Run Code Online (Sandbox Code Playgroud)
致:(
注意空白only: [])
resources :companies, param: :company_id
resources :companies, only: [], param: :id do
resources :shares, only: [:index]
end
Run Code Online (Sandbox Code Playgroud)
现在,当你运行时,rake routes你会看到正确的:
/companies/:company_id/shares(.:format)
Run Code Online (Sandbox Code Playgroud)
除了所有其他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)
Run Code Online (Sandbox Code Playgroud)
全部保留相同的:company_id参数名称。
| 归档时间: |
|
| 查看次数: |
645 次 |
| 最近记录: |