我遇到了一个奇怪的问题,我不确定如何纠正。我最初使用完整的REST操作在我的应用程序中创建了一个资源。一旦我开始清理代码,我意识到我不需要所有操作,并更改了路由代码以反映这一点。执行此操作后,它更改了一些命名助手,以便“索引”路径指向创建操作,指向现在显示的辅助路径指向更新。我已确保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
答案 0 :(得分:1)
好的,我明白你的问题是什么。问题在于:user_license_index
并不仅仅指向索引操作;它也指向创建动作。区别在于您是使用GET还是POST请求(默认为GET)。但是,routes页面只列出一次帮助程序。因此,当您删除索引操作时,它会从列表中删除索引路由,因此现在user_license_index
仅指向创建操作。
同样的想法适用于user_license
。它指向show,update和destroy动作。区别在于您使用GET,PATCH / PUT或DELETE请求。
_index
的原因是" license"是一个单数的词(就像#34;绵羊"或"鱼")。