Ruby on Rails - 路由 - 在范围内使用命名空间的适当情况?

时间:2015-03-29 04:51:33

标签: ruby-on-rails ruby-on-rails-4

在我的应用程序中,我有一些导航项目是下拉菜单。我唯一的限制是下拉菜单中的每个链接都应该以其所属的菜单名称为前缀的url路径。例如:

http://example.com/dropdown1/page1
http://example.com/dropdown1/page2
http://example.com/dropdown1/page3
http://example.com/dropdown2/page4
http://example.com/dropdown3/page5
http://example.com/dropdown3/page6

我知道在为这些页面创建路线时我有两个选择。

  1. 使用范围。只有url路径是作用域/前缀的。
  2. 使用命名空间。除了作用域/前缀的url之外,控制器,视图,模型和路径助手也将被命名空间。
  3. 每个下拉列表中的页面都有不同的独立功能,但下拉列表中的每个功能都共享相同的类别。命名这些功能或仅限定它们的范围更有意义吗?

1 个答案:

答案 0 :(得分:0)

如果您的唯一约束是下拉菜单中的每个链接都必须以其所属的菜单名称为前缀的网址路径,那么我的建议是范围路径< / strong>对于那些下拉路径。

命名空间提供了更大程度的开箱即用,对于拥有管理部分或API层的情况更为有用,其中相同的资源根据其命名空间的不同而表现不同。

作用域提供了更多控制权,允许您指定应该命名的内容 - 在这种情况下,如果只有路由不同,那么您可以使用类似的内容:

scope 'dropdown1' do
  # routing here
end

Rails指南很好地解释了usage of namespacing

  

最常见的是,您可以在Admin ::名称空间下对许多管理控制器进行分组。您可以将这些控制器放在app / controllers / admin目录下,然后将它们组合在路由器中。