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" ).