我想知道是否有人能解释一下如何在对象数组上使用will_paginate?
例如,在我的网站上,我有一个评论部分,用户可以在那里对意见进行评分。这是我写的一个方法,用来收集评价意见的用户:
def agree_list
list = OpinionRating.find_all_by_opinion_id(params[:id])
@agree_list = []
list.each do |r|
user = Profile.find(r.profile_id)
@agree_list << user
end
end
谢谢
发布于 2011-12-07 05:45:32
will_paginate 3.0旨在利用Rails3中的新ActiveRecord::Relation
,因此默认情况下它只在关系上定义paginate
。它仍然可以与数组一起工作,但您必须告诉rails需要该部分。
在您的config/initializers
(我使用的是will_paginate_array_fix.rb
)的文件中,添加以下内容
require 'will_paginate/array'
然后,您可以对数组使用
my_array.paginate(:page => x, :per_page => y)
发布于 2010-12-04 18:10:14
gem will_paginate
将对ActiveRecord查询和数组进行分页。
list = OpinionRating.where(:opinion_id => params[:id]).includes(:profile).paginate(:page => params[:page])
@agree_list = list.map(&:profile)
发布于 2013-06-29 06:13:34
如果您不想使用配置文件或遇到问题,也可以确保返回ActiveRecord::Relation而不是数组。例如,将agree_list改为用户ids列表,然后对这些ids执行IN以返回关系。
def agree_list
list = OpinionRating.find_all_by_opinion_id(params[:id])
@agree_id_list = []
list.each do |r|
user = Profile.find(r.profile_id)
@agree_id_list << user.id
end
@agree_list = User.where(:id => @agree_id_list)
end
从数据库的角度来看,这是低效的,但是对于任何对will_paginate配置文件有问题的人来说,这都是一个选择。
https://stackoverflow.com/questions/4352895
复制相似问题