Ruby on rails 3 轨道布线:on=>;:收集失败,但只是有时

Ruby on rails 3 轨道布线:on=>;:收集失败,但只是有时,ruby-on-rails-3,rails-routing,Ruby On Rails 3,Rails Routing,一些细节,我在本地Ruby 1.8.7/WEBrick上使用Rails 3.2.1,在服务器上使用1.8.7 EE/Passenger) 这是我的问题,我有一个名为foo的控制器和一个名为bar的操作,我需要创建一个到它的路由。“bar”通过get访问 正如所有的医生所说,我确实: resources :foo do get :bar, :on => :collection end 当我加载具有以下内容的视图(在haml中): =链接到“Bar”,Bar\u foo\u路径 ,我得到

一些细节,我在本地Ruby 1.8.7/WEBrick上使用Rails 3.2.1,在服务器上使用1.8.7 EE/Passenger)

这是我的问题,我有一个名为foo的控制器和一个名为bar的操作,我需要创建一个到它的路由。“bar”通过get访问

正如所有的医生所说,我确实:

resources :foo do
  get :bar, :on => :collection
end
当我加载具有以下内容的视图(在haml中): =链接到“Bar”,Bar\u foo\u路径 ,我得到:

尽管这毫无意义,我还是决定换一个 :收藏 到 :成员 这实际上会允许页面加载,但很明显,链接崩溃了,因为我没有任何链接 :id 添加到URL中

但奇怪的是,如果我换了 :成员 回到 :收藏 它正常工作…直到我需要重新启动web服务器,然后它又恢复了故障状态。在当地,这是所有的时间,所以它使这些路线的工作令人沮丧,你可以想象。它在服务器上也会断开,因为我显然没有能力在服务器之间切换 :成员 和 :收藏

我可以在本地和服务器上按需复制,真正重要的似乎是从 :成员 到 :收藏 (所以我可以从 :成员并复制问题) ,所以请告诉我,我只是在做一些愚蠢的事情,或者我发现了一些关于 :on=>:集合 ?

编辑:

只是为了澄清一下,如果我将其切换到较长的形式,同样的行为也会出现:

resources :foo do
  collection do
    get 'bar'
  end
end

事实证明,我应该多注意一下“耙路”。出于某种原因,尽管所有文档都说路由应该是“bar\u foo\u path”,但rails认为它是“bar\u foo\u index\u path”

这并不能解释为什么要把它翻到 :成员 然后再回到 :收藏 会将路由翻转到预期的“bar\u foo\u路径”,但至少应用程序会运行

resources :foo do
  collection do
    get 'bar'
  end
end