我从will paginate gem发出此错误:undefined method
total_pages' for Array:0xa2710a0`
在我使用' sort_by' 而不是'订购后,尝试在我的艺术家控制器中进行分页。有没有人知道这方面的方法?看来你不能以这种方式使用paginate,因为@artists变成了一个数组而不是一个活跃的记录集合?任何建议表示赞赏
澄清我使用sort_by而不是.order来表示这3个参数,因为他们调用了模型中的函数,而不是我的Artist数据库表中的列。
def index
if params[:search]
@artists = Artist.search(params[:search].titleize).paginate(:page => params[:page]).order("created_at DESC")
elsif params[:sort] == "numConcerts"
@artists = Artist.all.paginate(:page => params[:page]).sort_by{|artist| artist.concerts.size}.reverse
elsif params[:sort] == "avgRating"
@artists = Artist.all.paginate(:page => params[:page]).sort_by{|artist| artist.avgOverall}.reverse
elsif params[:sort] == "numReviews"
@artists = Artist.all.paginate(:page => params[:page]).sort_by{|artist| artist.numReviews}.reverse
else
@artists = Artist.paginate(:page => params[:page]).order(:name)
end
end
视图中的代码只是
<%= will_paginate @artists %>
编辑:这似乎与我有同样的问题,它来自2008年,但我会尝试:http://pathfindersoftware.com/2008/06/how-to-use-will_paginate-with-non-activerecord-collectionarray/
编辑2:nope无法让它继续工作
编辑3:尝试做“要求&#39; will_paginate / array&#39;&#39;但那并没有解决它。
答案 0 :(得分:1)
def index
if params[:search]
@artists = Artist.search(params[:search].titleize).order("created_at DESC").page(params[:page])
elsif params[:sort] == "numConcerts"
@artists = Kaminari.paginate_array(Artist.all.sort_by{|artist| artist.concerts.size}.reverse).page(params[:page]).per(15)
elsif params[:sort] == "avgRating"
@artists = Kaminari.paginate_array(Artist.all.sort_by{|artist| artist.avgOverall}.reverse).page(params[:page]).per(15)
elsif params[:sort] == "numReviews"
@artists = Kaminari.paginate_array(Artist.all.sort_by{|artist| artist.numReviews}.reverse).page(params[:page]).per(15)
else
@artists = Artist.order(:name).page(params[:page])
end
end