我有一系列AR对象,我可以按字母顺序排序,我需要按字母分割,例如{:a => [apple],:b => [banana]}等等,基于我用于排序的属性。 最终结果应该是
<ul>
<li>A</li>
<ul>
<li> Apple </li>
</ul>
<li>B</li>
<ul>
<li> Banana </li>
等等。 我不知道怎么做... 该数组已使用DB按字母顺序排序。
有人能帮助我吗? NGW
答案 0 :(得分:2)
objects.group_by { |obj| obj.name[0].to_sym }
答案 1 :(得分:0)
您可以将其放入帮手:
def my_objects_in_groups_by_first_letters(objects, name_method, &block)
first_letters = objects.map {|o| o.send(name_method)[0, 1].upcase}.uniq
first_letters.each do |c|
yield c, objects.select {|o| o.send(name_method)[0, 1].upcase == c}
end
end
并在视图中使用此方法:
<ul>
<% my_objects_in_groups_by_first_letters(@objects, :name) do |letter, objects| -%>
<li>
<%= letter %>
<ul>
<% objects.each do |o| -%>
<li><%= o.name %></li>
<% end -%>
</ul>
</li>
<% end -%>
</ul>