一些细节,我在本地使用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为单位)时: = link_to“Bar”,bar_foo_path ,我明白了:
undefined local variable or method `bar_foo_path'
即使没有意义,我决定改变 :采集 至 :会员 这实际上会允许页面加载,但显然链接爆炸,因为我没有 :ID 添加URL。
但是这是奇怪的部分,如果我然后切换 :会员 回到 :采集 它应该工作......直到我需要重新启动Web服务器,然后它又重新打破了。在本地,这一直是,所以它使这些路线的工作令人沮丧,你可以想象。它也在服务器上中断,因为我显然没有能力在服务器之间切换 :会员 和 :集合
我可以在本地和服务器上按需复制此内容,而真正重要的一切似乎就是从中移除 :会员 至 :采集 (所以我可以先说 :成员并复制问题) 所以请告诉我,我只是在做一些愚蠢的事情,或者我发现了某种错误 :on => :采集 ?
编辑:
仅仅为了澄清,如果我将其切换为更长的形式,也会表现出同样的行为:
resources :foo do
collection do
get 'bar'
end
end
答案 0 :(得分:0)
嗯,事实证明我应该更多地关注“耙路”。出于某种原因,即使所有文档都说路由应该是“bar_foo_path”,rails认为它是“bar_foo_index_path”。
这并不能解释为什么要翻转它 :会员 然后再回到 :采集 会将路径翻转到预期的“bar_foo_path”,但至少应用程序会运行。