我收到了这段代码:
def user_activity
@array_activity = []
@testannounces = Announce.all
@testchallenges = Challenge.all
@testannounces.each do |x|
@array_temp = []
@array_temp.push x.created_at
@array_temp.push "annonunce"
@array_temp.push x
@array_activity.push @array_temp
end
@testchallenges.each do |y|
@array_temp = []
@array_temp.push y.created_at
@array_temp.push "challenge"
@array_temp.push y
@array_activity.push @array_temp
end
@array_activity.sort_by { |x| x[2].created_at }
end
好吧,通过只打印x [2] .created_at,它会返回给我
<% @array_activity.each do |x| %>
<p><%= x[2].created_at %></p>
<% end %>
2015-03-18 22:52:48 UTC
2015-03-18 22:59:06 UTC
2015-03-19 16:42:41 UTC
2015-03-19 23:20:25 UTC
2015-03-20 15:46:17 UTC
2015-03-23 23:35:43 UTC
2015-03-23 23:37:52 UTC
2015-03-23 23:59:37 UTC
2015-03-23 20:34:43 UTC
(我只有1个关于挑战的项目,如果你能注意到,那就是2015-03-23 20:34:43希望早于2015-03-23 23:59:37 UTC)
有人知道这里会发生什么吗?
答案 0 :(得分:0)
sort_by
不会改变接收者。如果要使用返回值,请将其保存到变量。
@activity_array = @array_activity.sort_by { |x| x[2].created_at }
或者,您可以使用爆炸版本来修改接收器。
@array_activity.sort_by! { |x| x[2].created_at }