Ruby on rails 如何防止在执行Z=X+;YX总是在上面

Ruby on rails 如何防止在执行Z=X+;YX总是在上面,ruby-on-rails,ruby,ruby-on-rails-3,Ruby On Rails,Ruby,Ruby On Rails 3,这就是我的意思 这是我的控制器 class StaticPagesController < ApplicationController def home if signed_in? @post_items = current_user.posts @activities = PublicActivity::Activity.order("created_at desc") @items = @post_items + @activities

这就是我的意思

这是我的控制器

class StaticPagesController < ApplicationController

  def home
    if signed_in?
      @post_items = current_user.posts
      @activities = PublicActivity::Activity.order("created_at desc")
      @items = @post_items + @activities
      @items.sort_by{|item| item.class == PublicActivity::Activity ? item.created_at : item.created_at}
      @items = @items.paginate(:page => 1, :per_page => 20)
    else
    redirect_to root_path  
    end
  end
class StaticPagesController1,:per_page=>20)
其他的
将\重定向到根\路径
结束
结束
正如您在上面看到的,此行
@items=@post\u items+@activities
导致堆叠排序。所有post_项目都是先订购的,而不是在其下方订购的活动

我正在尝试使用“created_at”将两者合并为一个订单


我如何防止这种堆叠式订购并使其作为一个整体订购?谢谢

排序依据
没有做你认为它在做的事情。它将返回一个新的排序数组。如果要修改数组,必须使用
sort\u by

@items.sort_by!(&:created_at)

我怎样才能让它下降?它似乎正朝着相反的方向发展。我正在尝试在顶部获取最新创建的_,您可以使用
排序{| x,y | x y}
@items.sort_by!{| item |-item.created_at}您最初的答案是有效的,但它将列表置于相反的方向。我在上面的评论中尝试了您的更新答案,但我在2013-04-30 22:33:51 UTC:Time
@items.sort_中得到了此错误
未定义的方法'-@'!{| item |-item.created_at.to_i}