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

时间:2015-10-26 00:17:12

标签: ruby-on-rails ruby model-view-controller view enumeration

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

<% @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 %>

我想知道在以这种方式嵌套多个枚举时最佳做法是什么?除了将此代码插入到局部之外,有没有更好的方法来实现这一点而不会使视图混乱。这样好吗?感谢。

1 个答案:

答案 0 :(得分:0)

显然,您的模型设置方式(Menu has_many categoriesCategory has_many dishes等。),如果你要在同一个视图中显示所有这些信息,你没有别的办法,而只是循环遍历它们并在你的视图中显示所需的数据,这很好,恕我直言。我没有看到任何问题。

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

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

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