【问题标题】:Rails Routing: How to rename the params-Hash keys in a (nested) resource block?Rails 路由:如何重命名(嵌套)资源块中的 params-Hash 键?
【发布时间】: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 会非常耗费工作!

谢谢

冯·斯波茨

【问题讨论】:

    标签: ruby-on-rails parameters routes


    【解决方案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 提到)。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2019-10-18
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2016-04-05
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多