此代码通过高中名称对用户朋友进行分组。
<% @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 %>
但它没有任何订单,我想按高价订购。显示最高组和第一组。有什么想法吗?
答案 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")