我有一个 AR 对象数组,我已经能够按字母顺序排序,我需要按字母拆分,例如 { :a => [apple], :b => [banana] } 等等,基于我用于排序的属性。最终结果应该类似于
<ul>
<li>A</li>
<ul>
<li> Apple </li>
</ul>
<li>B</li>
<ul>
<li> Banana </li>
等等。我不知道该怎么做......数组已经使用数据库按字母顺序排序。
有人能帮我吗?ngw
我有一个 AR 对象数组,我已经能够按字母顺序排序,我需要按字母拆分,例如 { :a => [apple], :b => [banana] } 等等,基于我用于排序的属性。最终结果应该类似于
<ul>
<li>A</li>
<ul>
<li> Apple </li>
</ul>
<li>B</li>
<ul>
<li> Banana </li>
等等。我不知道该怎么做......数组已经使用数据库按字母顺序排序。
有人能帮我吗?ngw
objects.group_by { |obj| obj.name[0].to_sym }
您可以将其放入助手中:
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>