Rails忽略了收集路由和路由以显示操作

时间:2015-11-14 19:53:42

标签: ruby-on-rails ruby-on-rails-4

我有以下路线:

resources :transactions do
  collection do
    post :detail
  end
end

当我到达http://localhost:3000/transactions/detail时,rails会给我这个错误:

Transactions中的

ActiveRecord :: RecordNotFound#show

无法找到id = detail

的交易

这让我觉得演出路线优先于我的收藏路线,但我无法弄清楚原因。与此问题非常相似:Rails ignores collection route and goes with show action instead,但我没有重复的资源:交易条目。

1 个答案:

答案 0 :(得分:3)

拉胡尔是对的。当您在浏览器中访问网址时,您正在发出GET请求。试试这个:

resources :transactions do
  collection do
    get :detail
  end
end

如果这是您进行嵌套的唯一途径,则可以缩短为:

resources :transactions do
  get :detail, on: :collection
end