将Paginate:限制结果数量

我使用will paginate gem为ruby。 我正在使用paginate来获取一群人并在一个字段上排序。 我想要的只是前100个。 基本上是顶级人物。 我看不到这样做。 我该怎么办呢? 谢谢

people = Person.limit(100).paginate(:per_page => 5) 

就我的知识而言,will_paginate没有为此提供一个选项,我只是在源代码中有一个根源来检查,但是如果你不介意在你的条件中有子查询就可以完成…

 people = Person.paginate(page: 10).where('people.id IN (SELECT id FROM people ORDER BY a_field LIMIT 100)').per_page(5) people.total_pages => 20 

将a_field替换为您的排序字段,这应该适合您。

(注意,上面使用当前版本的will_paginate(3.0.2)作为其语法,但相同的概念适用于旧版本以及使用选项哈希)

will_paginate gem将使用total_entries参数来限制要分页的条目数。

 @problems = Problem.paginate(page: params[:page], per_page: 10, total_entries: 30) 

这将为您提供3页,每页10条记录。