我有一堆帖子,我想总是每页显示 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
我该如何做到这一点?谢谢!
我有一堆帖子,我想总是每页显示 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
我该如何做到这一点?谢谢!
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