index_附加到路径错误地添加到rails 4路由

时间:2013-09-10 23:23:15

标签: ruby-on-rails ruby routes

我在我的应用程序中添加了一个名为“Triage”的控制器,并添加了一条PUT路径,如下所示:

resources :triage do
  collection do
    put :process_multiple
  end
end

而不是预期的process_multiple_triage_path路由,它似乎被处理为process_multiple_triage_index_path

process_multiple_triage_index_path   PUT     /triage/process_multiple(.:format) triage#process_multiple
triage_index_path    GET     /triage(.:format)   triage#index
POST     /triage(.:format)   triage#create

答案:事实证明这是因为Rails将分类视为一种单一资源,因此通过约定,您可以请求资源的“索引”。

2 个答案:

答案 0 :(得分:2)

这是因为单一的分类形式。 Rails注意到使用了分类而不是分类,因此作为约定的结果,请求将是索引。我已在另一个StackOverflow下面链接,这很好地解释了这一点。

您可以使用resource :triage代替resources(也不会自动创建索引路径)

More info here

答案 1 :(得分:0)

它在集合上,Rails会附加一个_index。如果要覆盖它,只需更改为:

resources :triage do
  collection do
    put :process_multiple, as: :proccess_multiple_triage
  end
end

现在您可以使用process_multiple_triage_path