使用分页时如何订购?

时间:2013-10-25 14:48:55

标签: ruby-on-rails ruby-on-rails-3 pagination kaminari

这可能是一个非常简单的问题。

这是我的代码。然后,我想对列@codes

排序的code.user.last_active_at进行排序
#here, I retrieve only the records that contains particular keyword.
@search = Code.search do  
    fulltext params[:search]
    with(:community_id, community_search)
    paginate :page => 1, :per_page => 1000000
end  

#Here, I try pagination. 10 records per each page.  
@codes = @search.results
@codes = Kaminari.paginate_array(@codes).page(params[:page]).per(10)

我想按照@code.user.last_active_at列的方式对它们进行排序 我怎么能这样做?

我试过这个

@codes = Kaminari.paginate_array(@codes.joins(:user).order('user.last_active_at DESC')).page(params[:page]).per(10)

但是它返回了这个错误

NoMethodError (undefined method `joins' for #
<Sunspot::Search::PaginatedCollection:0x0000001ca851a8>):
app/controllers/codes_controller.rb:95:in `index'

我在使用Kaminari pagination时如何排序?

1 个答案:

答案 0 :(得分:1)

Kaminari不会影响排序。首先你必须排序,然后得到页面(x).per(x) 例如在您的控制器中

@codes = @search.results
@codes = @codes.joins(:user).order('user.last_active_at DESC').page(params[:page]).per(10)

编辑: 在检查太阳黑子文件后,我认为你可以做类似的事情

@search = Code.search(include: :user) do  
    fulltext params[:search]
    with(:community_id, community_search)
    order_by('user.last_active_at DESC')
    #paginate :page => params[:page], :per_page => 10 you can add this and not use Kaminari
end  

您可以尝试加入除

之外的联接