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提出一个新问题,并包含一个包含相关代码的完整用例。嘿!我在这里发布了它: