Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/loops/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails 轨道中的两层嵌套路线_Ruby On Rails_Routes_Nested - Fatal编程技术网

Ruby on rails 轨道中的两层嵌套路线

Ruby on rails 轨道中的两层嵌套路线,ruby-on-rails,routes,nested,Ruby On Rails,Routes,Nested,我试图在轨道上设置两层嵌套路线,其中狗是主人的孩子,而膳食是狗的孩子。我能做以下事情吗 namespace :admin do resources :owners do resources :dogs end resources :dogs do resources :meals end end 你会的 namespace :admin do resources :owners do

我试图在轨道上设置两层嵌套路线,其中狗是主人的孩子,而膳食是狗的孩子。我能做以下事情吗

namespace :admin do
      resources :owners do
           resources :dogs
       end 
       resources :dogs do
           resources :meals
       end
end
你会的

namespace :admin do
  resources :owners do
    resources :dogs do
      resources :meals
    end
  end
end
namespace :admin do
  resources :owners do
    resources :dogs, shallow: true do
      resources :meals, shallow: true
    end
  end
end
但为了减少混乱,可以添加到嵌套管线。您这样做的原因是希望路由只包含查找记录所需的信息。例如,要获取所有者1的狗的列表,您的路径应该是
所有者/1/狗
,但是当您想要显示狗5的信息时,您只需要狗的id来识别唯一的记录,即使狗属于所有者1。如果没有浅层选项,狗5的路线是
owners/1/dogs/5
,但是有了它,路线是
dogs/5

这在进行多个级别的嵌套时特别有用。在您的情况下,如果狗5吃了第6顿饭,那么第6顿饭的路线将是
主人/1/dogs/5/膳食/6
,但使用浅层选项,第6顿饭的路线是
膳食/6
,而狗5顿饭的路线是
狗/5/膳食
。在构建路径时,您会喜欢使用浅层选项

因此,使用浅层选项,您可以

namespace :admin do
  resources :owners do
    resources :dogs do
      resources :meals
    end
  end
end
namespace :admin do
  resources :owners do
    resources :dogs, shallow: true do
      resources :meals, shallow: true
    end
  end
end

谢谢你解释这个肤浅的选项。