嵌套路线没有无意的顶级路线

时间:2014-02-21 06:54:50

标签: ruby-on-rails ruby routes

我有三个层次结构的资源,如下所示:

house 1-* residents 1-* books

我们知道拥有深层嵌套路线并不是很好,所以我们努力让最多1个资源的路径嵌套。定义如下:

resources :houses do
  resources :residents
end

resources :residents do
  resources :books
end

问题是我们最终将:residents定义为可以在不进行任何嵌套的情况下访问的资源 - 作为:books定义的一部分。有没有办法将:books定义为嵌套在:residents中,而不会无意中将:residents注册为顶级路线?

1 个答案:

答案 0 :(得分:1)

这可以通过使用范围完成,在您的情况下:

scope 'residents/:resident_id' do
  resources :books
end

但是,正如我在评论中所提到的,这种做法最终会让那些期望URL以某种方式行事的用户感到困惑(删除最后一位会使他们达到某种程度)。

相关问题