我最近安装了 will_paginate gem,它工作得很好,但我希望它适用于我目前的设置。现在,我在同一页面上显示所有提要(或帖子),但它们是根据点击该页面上的人数排序的:
控制器.rb
@t = Time.now
@h1 = @t - 1.hour
@feeds = Feed.find(:all, :order => "created_at DESC").sort { |p1, p2| p2.impressionist_count(:filter=>:all, :start_date=>@h1) <=> p1.impressionist_count(:filter=>:all, :start_date=>@h1)}
现在。。。我测试了分页宝石,如果我在控制器中执行此操作,它工作正常:
控制器.rb
@feeds = Feed.paginate(:per_page => 10, :page => params[:page], :order => "created_at DESC")
所以我想 1+1=2 并尝试通过执行以下操作将两者结合起来:
控制器.rb
@feeds = Feed.paginate(:per_page => 10, :page=>params[:page], :order => "created_at DESC").sort { |p1, p2| p2.impressionist_count(:filter=>:all, :start_date=>@h1) <=> p1.impressionist_count(:filter=>:all, :start_date=>@h1)}
我无法对我的帖子进行排序和分页。尝试加载页面时出现错误:
# 的未定义方法 'total_pages'
我希望这能工作,这将是非常甜蜜的:)。但是,如果它不起作用,还有其他方法可以做到这一点吗?
提前感谢!
这是因为默认情况下will_paginate仅适用于ActiveRecord关系。使用排序后,它将转换为数组。如果您希望will_paginate使用数组,则需要在控制器中支持它。
require 'will_paginate/array'