我有三个层次结构的资源,如下所示:
house 1-* residents 1-* books
我们知道拥有深层嵌套路线并不是很好,所以我们努力让最多1个资源的路径嵌套。定义如下:
resources :houses do
resources :residents
end
resources :residents do
resources :books
end
问题是我们最终将:residents
定义为可以在不进行任何嵌套的情况下访问的资源 - 作为:books
定义的一部分。有没有办法将:books
定义为嵌套在:residents
中,而不会无意中将:residents
注册为顶级路线?
答案 0 :(得分:1)
这可以通过使用范围完成,在您的情况下:
scope 'residents/:resident_id' do
resources :books
end
但是,正如我在评论中所提到的,这种做法最终会让那些期望URL以某种方式行事的用户感到困惑(删除最后一位会使他们达到某种程度)。