用Kaminari分页跳到midde

时间:2016-01-11 09:55:13

标签: ruby-on-rails pagination kaminari

假设我有30页与Kaminari分页:

#800 books, 25 per page
=paginate @books, :outer_window => 3, :window => 3

看起来像这样:

  

1 2 3 4 ... 30 31 32

没有点击5次就无法进入第16页。

  1. 1 * 2 3 [4] ... 30 31 32
  2. 1 2 3 4 * 5 6 [7] ... 30 31 32
  3. 1 2 3 4 5 6 7 * 8 9 [10] ... 30 31 32
  4. 1 2 3 ... 7 8 9 10 * 11 12 [13] ... 30 31 32
  5. 1 2 3 ... 10 11 12 13 * 14 15 [16] ... 30 31 32
  6. (*当前页面,[] =点击)

    进入堆叠中间似乎需要做很多工作。

    1. 如何在点击间隙(...)时将Kaminari扩展到第16页?
    2. 是否可以延长Kaminari以从头开始显示中间?
    3.   

      1 2 3 4 ... 15 16 17 ... 30 31 32

2 个答案:

答案 0 :(得分:1)

您可以使用内部和外部窗口选项(link),但我认为这不会解决您的问题。

正如@Michal Szyndel的评论所提到的,你需要使用生成器(post_mime_type注意:你可以传递-e来生成不同的模板语言)。生成文件后,您可以使用一些自定义逻辑编辑“paginator”部分。有关如何操作的介绍请观看Ryan的railscast(从4:53开始)

希望这会让你足够远,因为当你不在分页的开头或结尾时,中间窗口的工作方式取决于你的窗口大小和你想要的东西。 (例如,如果你有一个3的外窗口和2个50页的内窗口,当你在第15页时,这个分页器链接应该是什么样子?)

如果您需要更多帮助,请回复评论,我会更具体地回答。

答案 1 :(得分:1)

扩展kaminari视图元素非常简单。您需要自定义分页助手https://github.com/amatsuda/kaminari#customizing-the-pagination-helper

具体而言,假设您使用的是ERB,则需要修改新的app/views/kaminari/_gap.html.erb文件。

<%
  url,data = url.split('?')
  url += '?page=' + (num_pages/2)
%>
<span class="page gap">
  <%= link_to_unless page.current?, page, url %>
</span>

这会创建一个指向中间(真正num_pages/2 - 页)的链接。