【问题标题】:Ruby on Rails - Routing - Appropriate situations to use a namespace over a scope?Ruby on Rails - 路由 - 在范围内使用命名空间的适当情况?
【发布时间】:2015-03-29 04:51:33
【问题描述】:

在我的应用程序中,我有一些导航项是下拉菜单。我唯一的限制是下拉菜单中的每个链接都应该有它的 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 的作用域/前缀之外,控制器、视图、模型和路径助手也将被命名空间。

每个下拉菜单中的页面包含不同的独立功能,但下拉菜单中的每个功能共享相同的类别。将这些功能命名为命名空间或仅限定它们的范围更有意义吗?

【问题讨论】:

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


    【解决方案1】:

    如果您唯一的限制是下拉菜单中的每个链接都必须以它所属的菜单名称为前缀的 url 路径,那么我的建议是限定路线 用于那些下拉路径。

    命名空间提供了更高程度的开箱即用分离,并且对于具有管理部分或 API 层等场景更有用,在这些场景中,相同的资源会根据其命名空间的不同而表现不同。

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

    scope 'dropdown1' do
      # routing here
    end
    

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

    最常见的情况是,您可以将多个管理控制器分组到一个 Admin:: 命名空间下。您可以将这些控制器放在 app/controllers/admin 目录下,然后将它们组合到路由器中。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2012-05-10
      • 2013-10-09
      • 2011-11-07
      • 2012-07-05
      • 1970-01-01
      • 2011-01-24
      • 1970-01-01
      相关资源
      最近更新 更多