按最高集团排序 - 铁路

时间:2012-07-19 23:46:26

标签: ruby-on-rails ruby ruby-on-rails-3 activerecord

此代码通过高中名称对用户朋友进行分组。

<% @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 %>

但它没有任何订单,我想按高价订购。显示最高组和第一组。有什么想法吗?

2 个答案:

答案 0 :(得分: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

答案 1 :(得分:0)

你尝试过吗?

@user.friends.group(:highschool_name).order("highschool_name DESC")