1

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

这是我的代码。然后我想@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

4

1 回答 1

1

Kaminari 不影响排序。首先你必须排序然后获取 page(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  

你可以尝试加入除了包括

于 2013-10-25T14:59:26.103 回答