【问题标题】:How to set up kaminari correctly如何正确设置 kaminari
【发布时间】:2017-05-18 15:29:54
【问题描述】:

我正在使用 kaminari gem 进行分页。问题是我需要在 4 个元素后的第一页上分页,在 25 个元素后的所有其他页面上分页。可以配置 kaminari 来解决我的问题吗? 这是一个用法:

.pagination
  .pagination__back
    - if params[:page] && params[:page].to_i > 1
      = link_to "Previous news", news_items_path(page: params[:page].to_i - 1)
    - else
      = ""
  .pagination__forward
    - if params[:page]
      = link_to "Next news", news_items_path(page: params[:page].to_i + 1)
    - else
      = link_to "Next news", news_items_path(page: 2)

【问题讨论】:

    标签: ruby-on-rails ruby pagination kaminari


    【解决方案1】:

    首先,您可以省略所有与前进/前一页相关的代码。 Kaminari 已经用它的助手解决了这个问题。 就此而言,在您的视图中,使用以下代码:

    = paginate @your_resource
    

    这将呈现几个被 HTML5 标记包围的 ?page=N 分页链接。 (Source)

    要获得分页资源,您需要将以下代码添加到您的控制器:

    @your_resource = YourResource.order(:foobar).page(params[:page])
    # params[:page] will get added to each "paginated" request by Kaminari 
    # if you use its previously mentioned helper method.
    

    现在您需要一个动态限制。为此,我建议添加如下内容:

    def index
      @your_resource = YourResource.order(:foobar).page(params[:page]).per(dynamic_limit(params[:page]))
    end
    
    private
    def dynamic_limit(current_page = 1)
      if current_page == 1
        return 4
      else
        return 25
      end
    end
    

    这样您将检查当前页面,如果是第一页,则将结果限制为 4。否则为 25。

    【讨论】:

      猜你喜欢
      • 2011-10-11
      • 1970-01-01
      • 1970-01-01
      • 2011-04-15
      • 2020-08-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多