will_paginate宝石不起作用

时间:2016-02-03 16:12:52

标签: ruby-on-rails will-paginate

我遇到will_paginate的问题,表达起来非常简单:

> Story.paginate(page: 1, per_page: 10).count
=> 20

显然,这个数字应该是10,而不是20。

我在某种程度上做错了吗?在这里似乎没有多大的错误空间,但显然有些事情是不对的。我错过了什么?

2 个答案:

答案 0 :(得分:3)

您需要Story.paginate(page: 1, per_page:10).size,而不是count。 Count实际上会返回查询生成的记录总数。

答案 1 :(得分:0)

因为will_paginate gem会覆盖count方法

def count(*args)
  if limit_value
    excluded = [:order, :limit, :offset, :reorder]
    excluded << :includes unless eager_loading?
    rel = self.except(*excluded)
    column_name = (select_for_count(rel) || :all)
    rel.count(column_name)
  else
    super(*args)
  end
end

它会驱逐order, limit, offset and reorderlink to code

您应该使用sizetotal_entries