Rails Routes命名为Helper

时间:2015-01-24 18:17:33

标签: ruby-on-rails routes

我遇到了一个奇怪的问题,我不确定如何纠正。我最初使用完整的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

1 个答案:

答案 0 :(得分:1)

好的,我明白你的问题是什么。问题在于:user_license_index并不仅仅指向索引操作;它也指向创建动作。区别在于您是使用GET还是POST请求(默认为GET)。但是,routes页面只列出一次帮助程序。因此,当您删除索引操作时,它会从列表中删除索引路由,因此现在user_license_index仅指向创建操作。

同样的想法适用于user_license。它指向show,update和destroy动作。区别在于您使用GET,PATCH / PUT或DELETE请求。

顺便说一下,我认为后缀为_index的原因是" license"是一个单数的词(就像#34;绵羊"或"鱼")。