我正在对数组@items
这是相关的控制器部分
class StaticPagesController < ApplicationController
def home
if signed_in?
@post = current_user.microposts.build
@activities = PublicActivity::Activity.order("created_at desc").paginate(page: params[:page])
@feed_items = current_user.feed.paginate(page: params[:page])
@items = (@feed_items + @activities)
@items.sort_by! {|item| -item.created_at.to_i}
@items = @items.paginate(:page => 1, :per_page => 10)
else
redirect_to '/signin'
end
end
基本上,这就是我正在使用的那条线。
@items = @items.paginate(:page => 1, :per_page => 10)
我也尝试将其更改为下面的代码但不起作用。
@items = @items.paginate(page: params[:page], :per_page => 10)
内部initializers\will_paginate_array_fix.rb
我有这条线
require 'will_paginate/array'
在我看来,我正在使用这个
<%= render partial: 'shared/item', collection: @items %>
<%= will_paginate @items %>
对于第一页似乎工作正常,但是当我点击第2页或第3页或其他页面时,我得到一个空白。它是空的。有谁知道如何解决这个问题?
答案 0 :(得分:3)
我认为你的问题是你是通过组合活动和Feed项来构建你的数组,这些项目已经分页,然后你再次对它进行分页。
例如,假设您的活动和Feed项模型使用will paginating默认值,类似于每页20个项目,并且有15个活动和12个Feed项。
在第1页上,您组合了这个数组,进入前10并显示它们。 @items有27个条目,因此您显示指向第2页和第2页的链接。 3.但是当你点击它时,你正试图加载第2页的活动和第2页的供稿项,这些项目是空的,因为每个项目少于20个。
根据我的经验,尝试通过这样的几个集合进行分页是非常棘手的(除非你可以加载所有这些并且只是对数组进行分页)。 “加载更多项目”按钮更容易,因为您只需跟踪上一个截止日期