【问题标题】:why this pagination counter is always showing total number of records?为什么这个分页计数器总是显示记录总数?
【发布时间】:2011-12-05 06:59:11
【问题描述】:

我有一个用户模型和图像模型,并且有 has_many 关系。 我在图像表中有 18 条记录。现在的事情是:

 @images = @user.images.paginate(:page => params[:page],:per_page=> 12)
 p @images.count //output is always 18

图像数量为 18,始终

第一页是 18,然后第二页又是 18。为什么会这样?第一页应该是 12,第二页应该是 6。

PS:它只显示 12 和 6 条记录,但计数器不正确。我只想获取该页面上的记录数。基本上对于最后一页(考虑按 id DESC 排序)计数器我从 1 到 12 不等,我对那个计数器感兴趣。

【问题讨论】:

  • 我怀疑您可能在 belongs_to :user 上定义了一个 counter_cache,它正在缓存此计数。虽然没有确切的想法。

标签: ruby-on-rails ruby-on-rails-3 pagination will-paginate


【解决方案1】:

长度返回什么? Count 会打分贝,

logger.debug @images.length

试试这个?我认为分页效果会更好

@images = Image.where(:user_id => @user_id).paginate(:page => params[:page],:per_page=> 12)

【讨论】:

  • 酷..工作..我现在明白了...知道与 will_paginate 插件代码的区别..
  • Btwn 计数不会命中数据库,因为 Image.count 会命中数据库。请确认。
  • 在 Rails 控制台试一下,我 95% 确定它会命中数据库 rails console User.last.images.count => SELECT COUNT(*) FROM "images" WHERE "images"."user_id" = xxxx
  • dude images = user.images.paginate(:page => params[:page],:per_page=> 12) 然后 images.count 不会命中 DB。
猜你喜欢
  • 1970-01-01
  • 2018-08-08
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-03-27
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多