2013-05-16 67 views
0

我想使用资源在Ruby on Rails中创建路由,但我不想在URL中使用路径。 (例如/fishing/3而不是/board/fishing/thread/3。)以下是我当前的路由配置。Rails路径中的空白路径

resources :board, :only => [:index, :create, :new], :path => '' do 
    resources :thread, :only => [:index, :create, :new], :path => '' 
end 

但是,路线出现故障。例如,/:board_id(.:format)出现在/new(.:format)之前,所以不可能达到线程#新动作。有没有办法来覆盖这个?

回答

0

所以这有点棘手,因为它可以混淆其他路线。您目前的解决方案可能会在URL中使用双斜线的路线//。这条路线应该靠近或位于路线文件的底部,以便首先找到所有其他有效的路线。

match '/:board_id/:id' => 'thread#show', :constraints => { :id => /\d*/ } 
+0

令人惊讶的是,我目前的路由配置不会留下双斜杠,除了排序之外,我还没有任何其他问题。你的问题似乎表明,我应该手动为每个动作实施匹配,并称之为一天。现在我想到了,这根本不会太糟糕,因为辅助函数是用:as指令生成的。 – Vortico

+0

这似乎很奇怪我会怀疑你的当前实现的新线程的路径看起来像“//钓鱼//新” –