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 に答える