ruby-on-rails - 具有固定页面链接数的Kaminari分页控件

标签 ruby-on-rails kaminari

我想让Kaminari通过分页控制以固定的数量显示分页链接,例如每个导航页面上有10个链接。 Kaminari默认情况下在首页显示6个页面链接,并且当您继续浏览直到达到9个项目时,页面链接会继续增长。

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

当我继续浏览时,它将不断增长。

在浏览第5个链接之前,它仅显示总数为9的链接。

即使在Kaminari导航的开始或结束时,我如何始终保持10个链接计数。我已经尝试过Kaminari config.window,但这不是我想要的。

最佳答案

您可以猴子修补Kaminari的PaginatorPageProxy类。通过覆盖relevant_pagesinside_window?left_outer?right_outer?之类的方法,您可以控制何时在分页 View 帮助器中显示页面链接。

首先,请使用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

它虽然不漂亮,但可以完成工作。如果在 View 中设置window: 5,则该页面将始终显示总共10个链接以及当前页面的另一个<span>

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

关于ruby-on-rails - 具有固定页面链接数的Kaminari分页控件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13395556/

相关文章:

ruby-on-rails - Paperclip::NotIdentifiedByImageMagickError 当文件不是有效的附件内容类型时

ruby-on-rails - 使用按钮运行 rake 任务

php - 如何配置 nginx 将所有响应重定向到 .php 文件以在 404 上重定向?

javascript - Ruby on Rails - 使用 kaminari 和搜索表单加载更多按钮。 jQuery问题

事件管理中面板的分页

android - 我可以将 Ruby on Rails 用作 native Android 后端吗?

javascript - 如何使用 Jquery 更新数据确认属性内的消息?

ruby-on-rails - Rails 5.0.0.beta1 - 从未过滤的请求参数生成 URL 是不安全的

ruby-on-rails - 如何对获取的记录进行编号?

postgresql - 雷: page count performance for search query