Rails 路由:如何重命名(嵌套)资源块中的 params-Hash 键?
Posted
技术标签:
【中文标题】Rails 路由:如何重命名(嵌套)资源块中的 params-Hash 键?【英文标题】:Rails Routing: How to rename the params-Hash keys in a (nested) resource block? 【发布时间】:2021-07-26 01:03:14 【问题描述】:有没有办法重命名资源块中资源的键?我的页面路线如下所示
get ':slug', to: 'pages#show', as: :pages
resources :pages
因此,对于 show-action,关键不是/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 会非常耗费工作!
谢谢
冯·斯波茨
【问题讨论】:
【参考方案1】:嘿——你可以这样做的一个好方法是
# config/routes.rb
resources :pages, param: :slug
您可以在此处阅读更多相关信息:https://guides.rubyonrails.org/routing.html#overriding-named-route-parameters
【讨论】:
【参考方案2】:另一种选择是明确提供路线的名称:
put 'pages/:some_other_name_for_the_id', action: :do_something, as: :route_name
如果适用于您的用例,绝对首选使用 param:
选项(Damilare 提到)。
【讨论】:
以上是关于Rails 路由:如何重命名(嵌套)资源块中的 params-Hash 键?的主要内容,如果未能解决你的问题,请参考以下文章
如何更新脚手架生成的 MVC + 路由,用于在 Rails 中具有 2 个 belongs_to 关系的嵌套资源