Rails 3 分页,will_paginate 与 Kaminari

Posted

技术标签:

【中文标题】Rails 3 分页,will_paginate 与 Kaminari【英文标题】:Rails 3 pagination, will_paginate vs. Kaminari 【发布时间】:2012-01-01 11:40:31 【问题描述】:

我的设置:Rails 3.0.9、Ruby 1.9.2

我正在为我的应用程序寻找分页解决方案,发现与可靠的 will_paginate 相比,Kaminari 有一个新的宝石。看起来will_paginate 已经有一段时间没有更新了,但后来又随着 V3.0 回来了。共识是什么,一个优于另一个,为什么?提前感谢您的见解。

编辑

我在 Twitter 上问过 Ryan Bates,他说

两者都做得同样出色。最大的因素是如果你使用任何 需要分页的宝石,因为它们不兼容。我喜欢 will_paginate 的非引擎方法更多,但这是个人的 偏好。

【问题讨论】:

【参考方案1】:

我真的很喜欢Kaminari。我不知道 will_paginate 是否这样做,但 Kaminari 也可以对任何常规的旧 Array 进行分页:

Kaminari.paginate_array(an_array).page params[:page]

两者都有Railscasts,我建议您观看。

【讨论】:

【参考方案2】:

观看kaminari railscast 然后观看will paginate railscast

Ryan Bates 在 cmets 中建议 Kaminari 更多地使用分音,这可能会使其稍微变慢,但不会太多

【讨论】:

关于性能:浏览 100k+ 个条目会使 will_paginate 无法使用变慢。然而,kaminari 保持快速。【参考方案3】:

Kaminari Rocks 如果您使用的是 rails 3+,我喜欢使用它,因为

    最新的库,强大的支持rails 3+。 'Kaminari' 易于使用,它支持ajax 非常容易。 以纯对象方式进行分页。 它在 AREL 上用作代理,在 ActiveRecord 上没有重载特定的分页方法 不污染 Array 或 Hash 对象

    对其他视图格式的更多标准导轨支持,最重要的移动设备

    User.page(7).per(50)
    

    但是,如果您使用的是 rails 2.3 等,请坚持使用 will_paginate,它也适用于 rails 3 +,但在内部它不像 Kaminari 代码那么完美。

【讨论】:

【参考方案4】:

我用过这两种宝石,坦率地说,我更喜欢 Kaminari。它很容易使用。我没有发现任何性能问题或环境问题(我的应用程序在 Heroku 上)。

【讨论】:

【参考方案5】:

虽然 will_paginate 可以很快完成这项工作,但 Kaminari 还允许您快速编辑分页 html 输出。

这对我来说是件好事,因为我使用的是 Bootstrap 3,并且想使用默认的分页样式。

will_paginate 有一个 gem 可以让你做同样的事情,但是 Kaminari 它更灵活

【讨论】:

以上是关于Rails 3 分页,will_paginate 与 Kaminari的主要内容,如果未能解决你的问题,请参考以下文章

在 Rails 中使用 will_paginate 和 AJAX 实时搜索和 jQuery

Rails 有内置的分页解决方案吗?

使用 will_paginate gem 在 Rails 3.2.3 中调用 Ajax

使用 will_paginate 对多个分页页面进行排序

使用will_paginate和Rails时显示部分结果

在记录集合上使用 will_paginate 会更改分页结果计数?