Ruby on rails 使用嵌套资源重写命名管线参数

Ruby on rails 使用嵌套资源重写命名管线参数,ruby-on-rails,routes,actiondispatch,Ruby On Rails,Routes,Actiondispatch,我想覆盖:id参数并解释如何覆盖。但实际上并不适用于嵌套资源。 我的路线如下: resources :users, param: :user_id do resources :projects, param: :project_id end 这将生成格式为::user\u user\u id/:project\u id的url。我宁愿把它作为:user\u id/:project\u id。有人能帮忙吗?此代码: resources :users do resources :proje

我想覆盖
:id
参数并解释如何覆盖。但实际上并不适用于嵌套资源。 我的路线如下:

resources :users, param: :user_id do
  resources :projects, param: :project_id
end
这将生成格式为:
:user\u user\u id/:project\u id
的url。我宁愿把它作为
:user\u id/:project\u id
。有人能帮忙吗?

此代码:

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'

我知道这是一个已经回答过的老话题,但正如我所见,没有人解释为什么@3Jёёыы的代码有效,而@sonalkr132的代码无效(我知道这看起来有点离题,但@sonalkr132发布了另一个问题,表明他不理解它是如何工作的)

当您在
用户
内部创建
项目
等嵌套资源时,rails可能会有一个类似
用户/:id/projects/:id
的路径,这是毫无意义的,因此rails会自动在第一个
:id
中添加前缀,因此在
参数
中,您有
:user\id
:id
(参考
:project_id
,但毫无疑问我们在projects控制器中,因此无需进一步澄清)


现在,当你说
param::user\u id
,这加上前缀
user\u
,这就是为什么你得到
:user\u user\u id
-你要求rails做两次工作。

你回答了我的问题,但我需要更多。我的项目资源中有另一个嵌套的资源
问题
oach在我的用例中不起作用。为了问题的简单性,我没有添加
问题
。@sonalkr132提出一个新问题,并包含一个包含相关代码的完整用例。嘿!我在这里发布了它: