【问题标题】:How to make 'will_paginate' lazyload in rails 3?如何在 Rails 3 中制作“will_paginate”延迟加载?
【发布时间】:2010-08-19 07:31:21
【问题描述】:

在rails3中,现在几乎所有的查询接口都变成了延迟加载,但是'will_paginate'会在你使用'paginate'方法后立即访问数据库。我怎样才能让它延迟加载记录?

【问题讨论】:

    标签: ruby-on-rails will-paginate lazy-loading queryinterface


    【解决方案1】:

    我通过重写 will_paginate 中的许多代码来实现它,will_paginate 延迟加载真的很难,因为 will_paginate 有一个核心类 'WillPaginate::Collection',它是 'Array' 的子类。(我不喜欢此类)
    'paginate' 方法生成的所有结果都将返回一个 Collection 实例,因此它将强制将 'ActiveRecord::Relation' 对象放入一个 'Array' 中,这将强制 Relation 立即访问数据库。

    【讨论】:

    • 你能分享你的代码/分页吗?我遇到了同样的问题,由于 will_paginate,我无法利用缓存的延迟加载。
    • 请给我你的电子邮件(我的:croplio@gmail.com),我会发给你。
    • 嗨,我也想...在 github 上吗?
    【解决方案2】:

    我创建了一个非常轻量级的插件,它使用 limit(per_page).offset(page*per_page) 在 Rails 3 下实现分页。因此,它提供了延迟加载,非常适合片段缓存。界面与 will_paginate (@posts.recent.paginate :page=>params[:page]) 相同。目前还没有太多视图助手,但我相信你会发现它很有用:http://github.com/josei/simple_paginate

    【讨论】:

      猜你喜欢
      • 2018-08-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多