【问题标题】: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
    

    【讨论】:

    • 感谢您解释 SHALLOW 选项。
    猜你喜欢
    • 1970-01-01
    • 2017-07-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-09-09
    • 2010-11-22
    • 1970-01-01
    • 2018-09-16
    相关资源
    最近更新 更多