我正在使用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 %>
答案 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"]
}
现在,您可以遍历生成的哈希,以显示每个类别下的标题。