我的每个用户都有一个整数数组。用户参加比赛,我想根据他们阵列的前7个元素的总和对它们进行排序。我知道如何单独完成每个部分,但我不确定如何将它放在一起并在节目中显示。
在def show
@competition.users.sort_by{|e| e.daily.first(7).sum}
for comp in @competition.users
p comp.name
p comp.daily #Their array
end
这就是我得到前7个元素(目前在我的视图中使用)的总和:
user.daily.first(7).sum
感谢
答案 0 :(得分:2)
这将按照其总和的降序对用户进行排序。总和最高的用户将位于顶部。删除-
进行升序排序
@sorted_users = @competition.users.sort_by{|user| -user.daily.first(7).sum}
for comp in @sorted_users
p comp.name
p comp.daily #Their array
end
或者您可以使用sort_by!
进行就地排序
@competition.users.sort_by!{|user| -user.daily.first(7).sum}
for comp in @competition.users
p comp.name
p comp.daily #Their array
end
答案 1 :(得分:0)
您的代码是正确的,但您没有在任何地方存储已排序的数据
@competition.users.sort_by{|e| e.daily.first(7).sum}.each do |comp|
p comp.name
p comp.daily #Their array
end