参数错误的路线
routes with wrong params
我有以下路线:
resources :users, only: [] do
resources :events, only: %i[index]
delete :close_account, on: :member
end
出于某种原因,它生成具有不同参数的路由:
GET /backoffice/users/:user_id/events(.:format) backoffice/events#index
DELETE /backoffice/users/:id/close_account(.:format) backoffice/users#close_account
在一个路由中,参数是user_id
,下面的路由是id
。我希望两者都是 user_id
,所以我添加了 resources :users, param: :user_id
现在的路线比以前更奇怪了:
GET /backoffice/users/:user_user_id/events(.:format) backoffice/events#index
DELETE /backoffice/users/:user_id/close_account(.:format) backoffice/users#close_account
如何修复这条路线,使两条路线具有相同的参数?
参数不是"wrong"。您看到此行为的原因是 id
参数名称在这里保留给最内层的资源。也就是说,如果您的 EventsController
除了 index
之外还有一些其他操作,它将收到事件 ID 作为 id
,而相关的 User
ID 将是 user_id
.另一个路由不是嵌套资源,因此不需要不同的前缀。
这个可以在Rails guides section on nested resources.
中看到
话虽这么说,如果您真的希望两者都被称为 user_id
,您应该使用
delete "/backoffice/users/:user_id/close_account/", to: "backoffice/users#close_account"
我有以下路线:
resources :users, only: [] do
resources :events, only: %i[index]
delete :close_account, on: :member
end
出于某种原因,它生成具有不同参数的路由:
GET /backoffice/users/:user_id/events(.:format) backoffice/events#index
DELETE /backoffice/users/:id/close_account(.:format) backoffice/users#close_account
在一个路由中,参数是user_id
,下面的路由是id
。我希望两者都是 user_id
,所以我添加了 resources :users, param: :user_id
现在的路线比以前更奇怪了:
GET /backoffice/users/:user_user_id/events(.:format) backoffice/events#index
DELETE /backoffice/users/:user_id/close_account(.:format) backoffice/users#close_account
如何修复这条路线,使两条路线具有相同的参数?
参数不是"wrong"。您看到此行为的原因是 id
参数名称在这里保留给最内层的资源。也就是说,如果您的 EventsController
除了 index
之外还有一些其他操作,它将收到事件 ID 作为 id
,而相关的 User
ID 将是 user_id
.另一个路由不是嵌套资源,因此不需要不同的前缀。
这个可以在Rails guides section on nested resources.
中看到话虽这么说,如果您真的希望两者都被称为 user_id
,您应该使用
delete "/backoffice/users/:user_id/close_account/", to: "backoffice/users#close_account"