2

此处的代码按高中名称对用户朋友进行分组。

<% @user.friends.group_by(&:highschool_name).map do |hsname, friends| %>
<% next if hsname.blank? %>
<div class="contentbox">
    <div class="box-header">
        <h3><%= hsname %></h3>
    </div>
    <ul class="friends-list">
        <% friends.map do |friend| %>
           <li><%= image_tag(friend.image) %>
        <% end %> 
    </ul> 
</div>
<% end %>

但它没有任何顺序分组,我想按最高值排序。先显示最高组,然后再显示。有任何想法吗?

4

2 回答 2

2

group_by给你一个哈希作为回报。您可以在迭代之前对值的计数进行排序:

groups = @user.friends.group_by(&:highschool_name)
sorted_groups = groups.sort_by{|key, values| values.count}.reverse
sorted_groups.each do |hsname, friends|
  # do your thing here
end
于 2012-07-20T00:06:48.880 回答
0

你试过了吗?

@user.friends.group(:highschool_name).order("highschool_name DESC")
于 2012-07-20T00:24:41.530 回答