【问题标题】:Rails kaminari pagination with in_groups_of in activerecord query在 activerecord 查询中使用 in_groups_of 进行 Rails kaminari 分页
【发布时间】:2020-08-21 15:02:24
【问题描述】:

我希望将in_groups_of 用于我的 Activerecord 查询,但这似乎不适用于分页。

我想做一些事情,我想用 X 分割所有记录,并分别查看每个部分。

@document_texts = Text.where(active: true).in_groups_of(3)[0].page(params[:page])

编辑: 看起来 in_groups_by 不是我需要的。我想要做的是将 300 条记录拆分为 3,并且能够通过分页访问前 100 条、第二条 100 条或第三条 100 条。

【问题讨论】:

    标签: ruby-on-rails activerecord pagination kaminari


    【解决方案1】:

    我认为您可以使用Kaminari per scope 来完成您要查找的内容:

    @document_texts = Text.where(active: true).page(params[:page]).per(3)
    

    【讨论】:

    • 每个范围不符合我的要求
    • 为什么不呢?如果您真的总是想将 n 条记录分成 x 个块,则可以执行page_size = Text.where(active: true).count / x,然后在.page(page_size) 中使用结果。
    • 我只想显示 600 条记录中的 100-200 条记录(每页 20 条)。
    【解决方案2】:

    你有没有尝试each_slice,类似以下。

    [16] pry(main)> a = (1..300).to_a
    =>
    [17] pry(main)> b = Kaminari.paginate_array(a).page(1).per(100).each_slice(3)
    => #<Enumerator: ...>
    [18] pry(main)> b.each {|bb| print bb}
    [1, 2, 3][4, 5, 6][7, 8, 9][10, 11, 12][13, 14, 15][16, 17, 18][19, 20, 21][22, 23, 24][25, 26, 27][28, 29, 30][31, 32, 33][34, 35, 36][37, 38, 39][40, 41, 42][43, 44, 45][46, 47, 48][49, 50, 51][52, 53, 54][55, 56, 57][58, 59, 60][61, 62, 63][64, 65, 66][67, 68, 69][70, 71, 72][73, 74, 75][76, 77, 78][79, 80, 81][82, 83, 84][85, 86, 87][88, 89, 90][91, 92, 93][94, 95, 96][97, 98, 99][100]=> nil
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-08-19
      • 2012-02-04
      • 2013-08-16
      • 2011-09-26
      • 2012-11-24
      • 2011-07-06
      • 2012-02-18
      • 1970-01-01
      相关资源
      最近更新 更多