Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/63.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby/23.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 RubyonRails3文档:“;我可以吗&引用;“这样做明智吗?”;是否使用(至少)嵌套资源?_Ruby On Rails_Ruby_Ruby On Rails 3_Resources_Nested - Fatal编程技术网

Ruby on rails RubyonRails3文档:“;我可以吗&引用;“这样做明智吗?”;是否使用(至少)嵌套资源?

Ruby on rails RubyonRails3文档:“;我可以吗&引用;“这样做明智吗?”;是否使用(至少)嵌套资源?,ruby-on-rails,ruby,ruby-on-rails-3,resources,nested,Ruby On Rails,Ruby,Ruby On Rails 3,Resources,Nested,我阅读了\2.7.1节,特别是其中的嵌套限制 资源不应该嵌套得更多 深度超过1层 这是什么意思?也就是说,“我可以”\“建议使用这样的一级嵌套资源吗” namespace "users" do resources :publishers do resources :magazines end end 或者我应该使用类似的东西 namespace "users" do resources :publishers resources :magazines end ?你觉得

我阅读了\2.7.1节,特别是其中的嵌套限制

资源不应该嵌套得更多 深度超过1层

这是什么意思?也就是说,“我可以”\“建议使用这样的一级嵌套资源吗”

namespace "users" do
  resources :publishers do
    resources :magazines
  end
end
或者我应该使用类似的东西

namespace "users" do
  resources :publishers
  resources :magazines
end
你觉得怎么样


如果这是一种推荐的方法,那么如何编写路由路径(例如
新用户\u出版商\u杂志
..)

我认为这是品味的问题。这只是一个指南,不是规则。如果你觉得第一种方法更好,那就去做吧。我使用双重嵌套资源,我的同事中没有人对此不抱怨。但当然,若我看到4层或更多的嵌套资源,那个么写路径就很难了,所以我的限制是2层(有时是3层)。你应该选择自己的限额。

这取决于你需要什么

namespace "users" do
  resources :publishers do
    resources :magazines
  end
end
会给你不同的路线

namespace "users" do
  resources :publishers
  resources :magazines
end
首先,第二个给你的路线是

/用户/1/出版商/和/用户/1/杂志

而第一个给出

/用户/1/出版商/1/杂志


建议不要在你的路线上尽可能多地筑巢,除非你真的需要,就像你的生活依赖于它一样:p。我就是这么想的,因为3个级别的嵌套可能会让你遭受比帮助更大的痛苦。

它说明了不止一个级别,因此这是正确的,建议你始终通过出版商访问杂志:

namespace "users" do
  resources :publishers do
    resources :magazines
  end
end

这取决于模型:如果一本杂志属于出版商,而出版商属于用户,那么两级嵌套是有意义的(尽管它不是真正必要的)。如果一个出版商有很多用户,那么我建议不要使用这种方法,因为它会使事情变得不必要的复杂


要查看资源的命名路由帮助程序,可以使用“rake routes”。它很好地概述了定义的路由。

您也可以将浅路由用于资源。这是两全其美的做法。它会自动将资源嵌套一层,即使您在代码中嵌套了多个级别

namespace :users do
  shallow do
    resources :publishers do
      resources :maagazines
    end
  end
end

正如我所说,您必须始终从出版商编写到杂志的路线,因此:
/users/publisher/5/magazies
您输入的第一个代码就是您所需要的。命名空间“用户”执行资源:发布者执行资源:杂志结束