路由路径前缀Ruby on Rails

时间:2014-04-19 11:42:25

标签: ruby-on-rails ruby routes

这个问题更像是一种好奇心,而不是一个实际问题(我认为)。

所以我创建了一个具有2个函数的控制器,index和gen_seeds。当我为每个人制作路线时,我做了以下工作:

resources :seeder, only: [:index] do
  collection do
    get 'gen_seeds'
  end
end

哪个工作正常。动词,URI模式和动作都是正确的。让我好奇的是前缀。前缀是:

gen_seeds_backoffice_seeder_index
backoffice_seeder_index

我想知道为什么两个前缀的名字都有索引。如果我添加任何其他函数也将索引作为最后一个前缀名称。我的目标只是

gen_seeds_backoffice_seeder
backoffice_seeder

但我确实意识到这与应用程序无关,它确实如此。但好奇心让我变得更好。谁知道为什么会这样?由于我还是Ruby on Rails的新手,这可能是我的错误。

编辑 - 当然这是我的路线文件

namespace :backoffice do
delete :teams, to: 'teams#destroy_all'
resources :teams, only: [:index, :new, :destroy, :create] do
  collection do 
    post :import 
  end
end
resources :players, only: [:index, :destroy]
resources :seeder, only: [:index] do
  collection do
    get 'gen_seeds'
  end
end

这是我的路线

backoffice_teams                  DELETE /backoffice/teams(.:format)            backoffice/teams#destroy_all
import_backoffice_teams           POST   /backoffice/teams/import(.:format)     backoffice/teams#import
                                  GET    /backoffice/teams(.:format)            backoffice/teams#index
                                  POST   /backoffice/teams(.:format)            backoffice/teams#create
new_backoffice_team               GET    /backoffice/teams/new(.:format)        backoffice/teams#new
backoffice_team                   DELETE /backoffice/teams/:id(.:format)        backoffice/teams#destroy
backoffice_players                GET    /backoffice/players(.:format)          backoffice/players#index
backoffice_player                 DELETE /backoffice/players/:id(.:format)      backoffice/players#destroy
gen_seeds_backoffice_seeder_index GET    /backoffice/seeder/gen_seeds(.:format) backoffice/seeder#gen_seeds
backoffice_seeder_index           GET    /backoffice/seeder(.:format)           backoffice/seeder#index

1 个答案:

答案 0 :(得分:0)

也许您可以使用单数resource尝试sp1rs的解决方案:

#config/routes.rb
resource :seeder, only: :index do
    get :gen_seeds, on: :collection
end

编辑 - 阅读单一资源文档,它可能不是您正在寻找的;但无论哪种方式都可以帮到你

我遇到了另一个我正在做的应用程序的确切问题。问题是路线的名称 - 我有resources :posts - 会显示posts_index_path等。如果我使用resources :post,它会更改路径名称以适合