11

前提: 通常在准备一个新的 Ruby on Rails 应用程序时,我会绘制有关用户导航的模型和关系。通常我会遇到一个我需要问自己的地方,我是否应该超越通常的“经验法则”,即嵌套不超过 1 级。有时我觉得需要嵌套,而不是创建另一个命名空间路由和重复工作。
这是一个例子:

模型:用户、公司、地点
用户拥有并属于许多公司(多对多)
用户拥有并属于许多地点(多对多)
公司拥有并属于许多地点(多对多)

Routes:
1 级嵌套
users/:user_id/companies/ - 列出与用户相关的所有公司
users/:user_id/locations/ - 列出与用户相关的所有位置
1 级嵌套
users/:user_id/companies/:company_id/位置/ - 列出用户的所有公司位置

所以,我的问题是在 RoR 中嵌套超过 1 层是否合适?是还是不是?为什么?

4

3 回答 3

7

我倾向于遵循 Jamis Buck 的建议,并且永远不会嵌套超过一层。

编辑:如果您要嵌套超过 1 层,我会查看Edge中新的浅层路线功能

于 2008-10-02T22:11:16.733 回答
2
users/:user_id/companies/:company_id/locations/

虽然从技术上讲这很好,但命名的路由助手不会因此

user_company_location_path( user_id, company_id, location_id )

不得不像这样推车第 3 轮参数很烦人。任何烦人的事情都可能是一个危险信号。

于 2008-10-02T22:19:44.530 回答
1

虽然理论上听起来不错,但我发现嵌套多个级别可能会开始变得混乱 - 特别是如果您在不同级别有相同的命名控制器(这可能很常见)

例如

  user/x/blog/y/profile/z, and
  user/x/profile/a

我经常会发现我在与我认为我正在工作的不同的命名空间中工作。如果他们做类似但不同的事情,它会变得相当混乱 =)

我当前的应用程序,我上周通过并删除了大部分嵌套路由。(当然,YMMV)

于 2008-10-03T03:05:44.313 回答