Rails 路由:如何重命名(嵌套)资源块中的 params-Hash 键?

von*_*otz 1 parameters routes ruby-on-rails

有没有办法重命名资源块中资源的键?我的页面路由看起来像这样

get ':slug', to: 'pages#show', as: :pages
resources :pages
Run Code Online (Sandbox Code Playgroud)

因此,对于表演动作,关键不是,/pages/:id/pages/:slug如此处所述https://guides.rubyonrails.org/routing.html#naming-routes

有没有办法将所有 /pages/* 路由的 params-key 更改为: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
Run Code Online (Sandbox Code Playgroud)

手动设置所有路由只是为了更改该资源的 params-key 会非常费力!

谢谢

冯·斯波茨

小智 5

嘿——你可以这样做的一个好方法是

# config/routes.rb

resources :pages, param: :slug
Run Code Online (Sandbox Code Playgroud)

您可以在此处阅读更多相关信息:https : //guides.rubyonrails.org/routing.html#overriding-named-route-parameters