【问题标题】:Can Kaminari be used twice in the same controller def?Kaminari 可以在同一个控制器 def 中使用两次吗?
【发布时间】:2015-05-29 19:57:28
【问题描述】:

我是新手,我想弄清楚 Kaminari 是否可以在同一个控制器 def 中使用两次,如下面的示例所示。我最终希望能够在同一页面上分页并显示两组搜索结果....

例如:

def whatever
    @page = params[:page] ||= 1
    @per = params[:per] ||= 32

    @code = query (1st query)
    @code = query.uniq.to_a
    @code = Kaminari.paginate_array(@code).page(@page).per(@per)

    @code2 = query (2nd query)
    @code2 = query.uniq.to_a
    @code2 = Kaminari.paginate_array(@code2).page(@page).per(@per)
end

【问题讨论】:

  • 你已经拥有的代码应该可以像现在这样正常工作,我想知道你为什么在转换为数组后分页,以及 uniq 在做什么
  • 好问题。但无论如何,他不必担心,因为 rails 会为他延迟加载数据。 @MohammadAbuShady
  • 尽管人们认为延迟加载很好,但过度使用它会降低你的性能,但我不确定你指的是哪一部分,但无论如何我的意思是,如果你对数组进行分页,这意味着你将查询比您实际需要的更多的数据(如果不是,那您为什么要使用分页对?)这是一种浪费,只需让 kaminary 处理查询并将结果限制为您想要的那些“32”项。跨度>

标签: mysql ruby-on-rails pagination kaminari


【解决方案1】:

kaminary 不是按操作运行的,它不仅为数组添加方法,而且还与 activerecord 集成,您可以直接在任何查询中运行它,它将分页转换为 mysql 限制 + 偏移量,这比分页更好数组。

@data = Query.page(params[:page]).per(32)

如果页面是nil,它将被用作第1页

它还有很多功能,例如全局每个应用程序设置,每个模型设置等等,我认为这里不宜列出,您可以参考gem README了解更多详细信息

【讨论】:

  • 谢谢,莫。我想我感到困惑的原因是因为我之前给你的示例适用于其他控制器和操作,我只对数据库进行一次查询,但当我尝试查询时两个不同的表,然后使用 kaminari 进行分页,我最终得到如下结果:code
猜你喜欢
  • 2017-09-30
  • 1970-01-01
  • 2016-11-23
  • 2021-08-09
  • 1970-01-01
  • 1970-01-01
  • 2018-07-04
  • 1970-01-01
  • 2017-09-13
相关资源
最近更新 更多