如何组合一些值rails

时间:2014-01-03 07:11:36

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

我正在使用rails 4.而我正在尝试输出菜单导航。我得到了带有类别和标题列的PlaceType。有6个类别,我想输出类别只有1次,然后输出所有标题,这很长到这个ategory。我怎样才能做到这一点?

<% @types = PlaceType.all %>
  <% @types.each do |type| %>
    <ul><%= type.category %>
    <li><%= type.title %></li>
    </ul>
  <% end %>

这是我解决这个问题的方法:

<% @types = PlaceType.all %>
  <% @types.group_by(&:category).each do |category, type| %>
    <ul><%= category %>
  <% type.each do |t|%>
    <li><%= t.title %></li>
  <% end %>
    </ul>
  <% end %>

1 个答案:

答案 0 :(得分:1)

使用Array中提供的group_by方法。

@types.group_by {|type| type.category}

会给你一个看起来像这样的哈希:

{
  "Category A" => ["Title 1", "Title 2"],
  "Category B" => ["Title 3"],
  "Category C" => ["Title 4", "Title 5"]
}

现在,您可以遍历生成的哈希,以显示每个类别下的标题。