Rails 路由:如何重命名(嵌套)资源块中的 params-Hash 键?
Rails Routing: How to rename the params-Hash keys in a (nested) resource block?
有没有办法重命名资源块中资源的密钥?我的页面路由如下所示
get ':slug', to: 'pages#show', as: :pages
resources :pages
因此对于表演动作,关键不是 /pages/:id
,而是 /pages/:slug
,如此处所述 https://guides.rubyonrails.org/routing.html#naming-routes
有没有办法将所有 /pages/* 路由的参数键更改为 :slug
而不是 :id
特别是:这在嵌套资源块中可能吗?
例如:
resources :users do
resources :products do (should be params[:product_id] instead of params[:id])
resources :comments (should be params[:comment_id] instead of params[:id])
end
end
end
手动设置所有路由只是为了更改该资源的 params-key 会非常费力!
谢谢
冯·斯波茨
嘿 - 一个很好的方法是
# config/routes.rb
resources :pages, param: :slug
您可以在这里阅读更多相关信息:https://guides.rubyonrails.org/routing.html#overriding-named-route-parameters
另一种选择是明确提供路线名称:
put 'pages/:some_other_name_for_the_id', action: :do_something, as: :route_name
使用 param:
选项(由 Damilare 提到)绝对是首选,如果它适用于您的用例。
有没有办法重命名资源块中资源的密钥?我的页面路由如下所示
get ':slug', to: 'pages#show', as: :pages
resources :pages
因此对于表演动作,关键不是 /pages/:id
,而是 /pages/:slug
,如此处所述 https://guides.rubyonrails.org/routing.html#naming-routes
有没有办法将所有 /pages/* 路由的参数键更改为 :slug
而不是 :id
特别是:这在嵌套资源块中可能吗?
例如:
resources :users do
resources :products do (should be params[:product_id] instead of params[:id])
resources :comments (should be params[:comment_id] instead of params[:id])
end
end
end
手动设置所有路由只是为了更改该资源的 params-key 会非常费力!
谢谢
冯·斯波茨
嘿 - 一个很好的方法是
# config/routes.rb
resources :pages, param: :slug
您可以在这里阅读更多相关信息:https://guides.rubyonrails.org/routing.html#overriding-named-route-parameters
另一种选择是明确提供路线名称:
put 'pages/:some_other_name_for_the_id', action: :do_something, as: :route_name
使用 param:
选项(由 Damilare 提到)绝对是首选,如果它适用于您的用例。