具有固定页面链接计数的Kaminari分页控制

Ton*_*shi 9 ruby-on-rails kaminari

我希望Kaminari能够通过分页控制显示固定计数的分页链接,例如每个导航页面上的10个链接.Kaminari默认在第一页显示6个页面链接,当您继续浏览时页面链接会继续增长,直到您达到9个项目.

我在这里显示,当我第一次加载时,它将总共有5个链接.

在此输入图像描述

当我继续浏览时,它会增长.

在此输入图像描述

在您浏览第5个链接之前,它仅显示9个链接.

在此输入图像描述

即使在使用Kaminari导航的开头或结尾,我如何始终保持链接数为10.我尝试过Kaminari config.window,但这不是我想要的.

Kei*_*ith 10

你可以修补Kaminari PaginatorPageProxy课程.通过覆盖等的方法relevant_pages,inside_window?,left_outer?right_outer?您可以在一个网页链接在PAGINATE视图助手表示被控制.

要开始使用,请在以下代码中config/initializers调用kaminari.rb并粘贴新文件:

module Kaminari
  module Helpers
    class Paginator < Tag
      def relevant_pages(options)
        1..options[:total_pages]
      end

      class PageProxy
        def inside_window?
          if @options[:current_page] <= @options[:window]
            @page <= (@options[:window] * 2) + 1
          elsif (@options[:total_pages] - @options[:current_page].number) < @options[:window]
            @page >= (@options[:total_pages] - (@options[:window] * 2))
          else
            (@options[:current_page] - @page).abs <= @options[:window]
          end
        end
      end
    end
  end
end
Run Code Online (Sandbox Code Playgroud)

它不漂亮,但它完成了工作.如果您window: 5在视图中进行设置,那么这将始终显示总共10个链接以及<span>当前页面的另一个链接.

要了解更多信息,请查看源代码https://github.com/amatsuda/kaminari/blob/master/lib/kaminari/helpers/paginator.rb