这可能是一个非常简单的问题。
这是我的代码。然后,我想对列@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
时如何排序?
答案 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
您可以尝试加入除
之外的联接