【问题标题】:2 levels nested route in rails轨道中的 2 级嵌套路由
【发布时间】:2021-03-04 00:33:02
【问题描述】:
我正在尝试在 Rails 中设置 2 层嵌套路线,其中狗是主人的孩子,而饭菜是狗的孩子。我可以执行以下操作吗?
namespace :admin do
resources :owners do
resources :dogs
end
resources :dogs do
resources :meals
end
end
【问题讨论】:
标签:
ruby-on-rails
routes
nested
【解决方案1】:
你会的
namespace :admin do
resources :owners do
resources :dogs do
resources :meals
end
end
end
但为了让事情不那么混乱,Rails has a shallow option 你可以添加到嵌套路由。您可能会这样做的原因是您希望路线仅包含查找记录所需的信息。例如,要获取所有者 1 的狗列表,您的路线将是 owners/1/dogs,但是当您要显示狗 5 的信息时,即使该狗属于所有者 1,您也只需要狗的 id 即可识别该唯一记录。如果没有 shallow 选项,Dog 5 的路线是 owners/1/dogs/5,但有了它,路线是 dogs/5。
当您进行多于一层的嵌套时,这会特别有用。在你的情况下,如果狗 5 吃了 6 餐,那么 6 餐的路线将是 owners/1/dogs/5/meals/6,但如果使用浅选项,则 6 餐的路线是 meals/6,而狗 5 的用餐路线是 dogs/5/meals .在构建路径时,您会喜欢使用 shallow 选项。
因此,使用浅选项,您会这样做
namespace :admin do
resources :owners do
resources :dogs, shallow: true do
resources :meals, shallow: true
end
end
end