嵌套枚举是不好的做法吗?

Are nested enumerables bad practice?

在我看来,我生成了许多餐厅菜单,这些菜单分为菜单类别,这些类别中有菜肴。现在我的模板设置如下:

<% @menus.each do |menu| %>
  <h2><%= menu.name %></h2>
  ...    
  <% menu.categories.each do |category| %>
    <h3><%= category.name %></h3>
    ...
    <% category.dishes.each do |dish| %>
     <p><%= dish.name %></p>
      ...
    <% end %>
  <% end %>
<% end %>

我想知道在以这种方式嵌套多个可枚举项时,最佳做法是什么?除了将此代码插入部分代码之外,是否有更好的方法来完成此操作而不会使视图混乱。就这样可以吗?谢谢

显然,您的模型设置方式 (Menu has_many categories, Category has_many dishes 等),如果您要在同一个视图中显示所有这些信息,您别无选择,只能遍历它们并在您的视图中显示所需的数据观点很好,恕我直言。我认为这没有任何问题。

只是一个提示,在循环关联模型的数据时,您只需要注意关联模型属性的数据始终存在,否则其中一些可能会出现 undefined method 'method_name' for nil:NilClass 错误.为避免该问题,您还可以使用 try。例如

menu.try(:name)
category.try(:name)
dish.try(:name)

等等

这样,如果某些或任何一个关联模型没有数据(即 nil),您的视图将不会爆炸。