0

我有一堆帖子,我想总是每页显示 3 个。假设我有 4 个帖子,如下所示:

post 1
post 2
post 3
post 4

如果我使用 will_paginate (或任何分页插件),每页有 3 个结果,第 1 页将包含:

post 1
post 2
post 3

第 2 页将包含

post 4

我想让它使第一页包含帖子 1、2 和 3,而第二页将循环回到开头,如下所示:

post 4
post 1
post 2

我该如何做到这一点?谢谢!

4

1 回答 1

2

WillPaginate 实际上允许您定义它直接使用的集合WillPaginate::Collection.create。我认为像下面这样的一些代码应该可以解决问题:

@posts = Post.offset((page - 1) * per_page).limit(per_page)
post_count = @posts.count
if post_count < per_page
  @posts = @posts.all + Post.limit(per_page - post_count).all
end

# At this point you have an array of posts. 
# Now we create the WillPaginate::Collection so will_paginate will work.

@posts = WillPaginate::Collection.create(page, per_page) do |pager|
  pager.replace(@posts)
  pager.total_entries = Post.count
  pager
end
于 2012-04-20T02:17:31.060 回答