自定义Rails路由以删除模型名称

时间:2010-12-09 04:01:11

标签: ruby-on-rails ruby-on-rails-3

我有两个具有has-many / belongs-to关系的模型。路由是嵌套的,我在routes.rb:

中有这个
resources :threads do
  resources :posts
end

所以我获得了例如example.org/threads/147/posts/372和example.org/threads/298等网址。

如何更改,以便URL更像example.org/147/372,隐含模型?

1 个答案:

答案 0 :(得分:1)

您可以配置如下路线:

match ':id' => 'threads#show'
match ':thread_id/:id' => 'posts#show'

这样可行,但它也会导致其他路线出现问题,因为它不仅会匹配example.org/123/456,还会匹配example.org/user/mark

为了确保它只匹配模型的可能id(数字),您可以添加如下约束:

match ':id' => 'threads#show', :constraints => { :id => /\d*/ }