Rails 路由命名助手
Rails Routes Named Helper
我遇到了一个奇怪的问题,不知道如何解决。我最初在我的应用程序中使用完整的 REST 操作创建了一个资源。开始清理代码后,我意识到我不需要所有操作,并更改了路由代码以反映这一点。这样做之后,它更改了一些命名助手,以便 "index" 路径指向创建操作,而指向显示的助手路径现在指向更新。我已确保 index_path 未在任何代码中使用。有没有办法彻底删除不再需要的操作?
原码:
resources :users do
resources :license
end
新代码:
resources :users do
resources :license, only: [:new, :create, :edit, :update, :destroy]
end
许可证的原始路线列表:
user_license_index GET /users/:user_id/license(.:format) license#index
POST /users/:user_id/license(.:format) license#create
new_user_license GET /users/:user_id/license/new(.:format) license#new
edit_user_license GET /users/:user_id/license/:id/edit(.:format) license#edit
user_license GET /users/:user_id/license/:id(.:format) license#show
PATCH /users/:user_id/license/:id(.:format) license#update
PUT /users/:user_id/license/:id(.:format) license#update
DELETE /users/:user_id/license/:id(.:format) license#destroy
删除索引和显示后的新路线:
user_license_index POST /users/:user_id/license(.:format) license#create
new_user_license GET /users/:user_id/license/new(.:format) license#new
edit_user_license GET /users/:user_id/license/:id/edit(.:format) license#edit
user_license PATCH /users/:user_id/license/:id(.:format) license#update
PUT /users/:user_id/license/:id(.:format) license#update
DELETE /users/:user_id/license/:id(.:format) license#destroy
好的,我明白你的问题了。问题是:user_license_index
不只是指向索引操作;它还指向创建操作。区别在于您是使用 GET 还是 POST 请求(默认情况下为 GET)。但是,路由页面只列出一次助手。因此,当您删除索引操作时,它会从列表中删除索引路由,因此现在 user_license_index
仅指向创建操作。
同样的想法也适用于 user_license
。它指向显示、更新和销毁操作。区别在于您使用的是 GET、PATCH/PUT 还是 DELETE 请求。
顺便说一句,我认为有 _index
后缀的原因是 "license" 这个词是一个单数词(就像 "sheep" 或 "fish" ).
我遇到了一个奇怪的问题,不知道如何解决。我最初在我的应用程序中使用完整的 REST 操作创建了一个资源。开始清理代码后,我意识到我不需要所有操作,并更改了路由代码以反映这一点。这样做之后,它更改了一些命名助手,以便 "index" 路径指向创建操作,而指向显示的助手路径现在指向更新。我已确保 index_path 未在任何代码中使用。有没有办法彻底删除不再需要的操作?
原码:
resources :users do
resources :license
end
新代码:
resources :users do
resources :license, only: [:new, :create, :edit, :update, :destroy]
end
许可证的原始路线列表:
user_license_index GET /users/:user_id/license(.:format) license#index
POST /users/:user_id/license(.:format) license#create
new_user_license GET /users/:user_id/license/new(.:format) license#new
edit_user_license GET /users/:user_id/license/:id/edit(.:format) license#edit
user_license GET /users/:user_id/license/:id(.:format) license#show
PATCH /users/:user_id/license/:id(.:format) license#update
PUT /users/:user_id/license/:id(.:format) license#update
DELETE /users/:user_id/license/:id(.:format) license#destroy
删除索引和显示后的新路线:
user_license_index POST /users/:user_id/license(.:format) license#create
new_user_license GET /users/:user_id/license/new(.:format) license#new
edit_user_license GET /users/:user_id/license/:id/edit(.:format) license#edit
user_license PATCH /users/:user_id/license/:id(.:format) license#update
PUT /users/:user_id/license/:id(.:format) license#update
DELETE /users/:user_id/license/:id(.:format) license#destroy
好的,我明白你的问题了。问题是:user_license_index
不只是指向索引操作;它还指向创建操作。区别在于您是使用 GET 还是 POST 请求(默认情况下为 GET)。但是,路由页面只列出一次助手。因此,当您删除索引操作时,它会从列表中删除索引路由,因此现在 user_license_index
仅指向创建操作。
同样的想法也适用于 user_license
。它指向显示、更新和销毁操作。区别在于您使用的是 GET、PATCH/PUT 还是 DELETE 请求。
顺便说一句,我认为有 _index
后缀的原因是 "license" 这个词是一个单数词(就像 "sheep" 或 "fish" ).