【问题标题】:Overriding Named Route Parameters with nested resources使用嵌套资源覆盖命名路由参数
【发布时间】:2015-11-23 21:17:56
【问题描述】:

我想覆盖 :id 参数,this 解释了如何。但不适用于嵌套资源。 我的路线如下所示:

resources :users, param: :user_id do
  resources :projects, param: :project_id
end

这会生成格式为::user_user_id/:project_id 的 url。我宁愿把它写成:user_id/:project_id。有人可以帮忙吗?

【问题讨论】:

    标签: ruby-on-rails routes actiondispatch


    【解决方案1】:

    这段代码:

    resources :users do
      resources :projects, param: :project_id
    end
    

    生成如下路线:

        user_projects GET    /users/:user_id/projects(.:format)                          projects#index
                      POST   /users/:user_id/projects(.:format)                          projects#create
     new_user_project GET    /users/:user_id/projects/new(.:format)                      projects#new
    edit_user_project GET    /users/:user_id/projects/:project_id/edit(.:format)         projects#edit
         user_project GET    /users/:user_id/projects/:project_id(.:format)              projects#show
                      PATCH  /users/:user_id/projects/:project_id(.:format)              projects#update
                      PUT    /users/:user_id/projects/:project_id(.:format)              projects#update
                      DELETE /users/:user_id/projects/:project_id(.:format)              projects#destroy
    

    经过测试。 Rails '4.2.1'

    【讨论】:

    • 您确实正确回答了我的问题,但我需要更多。我的项目资源中有另一个嵌套资源issues。您可以说您的方法在我的用例中不起作用。为了问题的简单性,我没有添加issues
    • @sonalkr132 提出一个新问题并包含一个带有相关代码的完整案例。
    • 嘿Зелёный!我已经在这里发布了:stackoverflow.com/questions/32284593/…
    【解决方案2】:

    我知道这是一个已经回答的老话题,但正如我所见,没有解释为什么 @Зелёный 的代码有效而不是 @sonalkr132 的代码(我知道这似乎离题,但 @sonalkr132 发布了另一个问题表明他不明白它是如何工作的)

    当您在users 中创建像projects 这样的嵌套资源时,rails 可能会有类似users/:id/projects/:id 这样的路径,这是无稽之谈,因此rails 会自动为第一个:id 添加前缀,因此在@ 987654325@你有:user_id:id(参考:project_id,但毫无疑问我们在ProjectsController中,所以不需要进一步澄清)

    现在,当你说 param: :user_id 时,它会加上前缀 user_,这就是你得到 :user_user_id 的原因 - 你要求 rails 做两次工作。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-04-07
      • 2021-05-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-12-01
      • 1970-01-01
      相关资源
      最近更新 更多