【发布时间】:2014-06-13 09:29:08
【问题描述】:
我从will paginate gem: undefined methodtotal_pages' for Array:0xa2710a0` 得到这个错误
当我使用 'sort_by' 而不是 'order' 后尝试在我的艺术家控制器中分页时。有谁知道解决这个问题的方法?似乎您不能以这种方式使用分页,因为@artists 变成了一个数组而不是一个活动的记录集合?任何建议表示赞赏
澄清我对这 3 个参数使用的是 sort_by 而不是 .order,因为它们调用的是我的模型中的函数,而不是我的 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:不,它仍然无法正常工作
编辑 3:尝试做 'require 'will_paginate/array'' 但没有解决它。
【问题讨论】:
-
难道没有办法使用
.order而不是.sort-by来获得您想要的其他类型吗?例如,@artists = Artist.order(numReviews: :desc).paginate(:page => params[:page]) -
@lurker 我不这么认为,因为这些是对艺术家/音乐会模型中的函数的调用,而不是艺术家数据库表中的列。
标签: sorting ruby-on-rails-4 pagination will-paginate