Will Paginate: ограничение количества результатов - PullRequest
4 голосов
/ 01 октября 2011

Я использую драгоценный камень воли для рубина.Я использую волнистость, чтобы собрать кучу людей и сортировать по полю.То, что я хочу, это только первые 100 из них.По сути, лучшие люди.Я не могу сделать это.Как бы я пошел об этом?Спасибо

Ответы [ 3 ]

4 голосов
/ 01 октября 2011

Насколько мне известно, 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) дляего синтаксис, но та же концепция применима и к более старой версии с использованием хеша опций)

2 голосов
/ 12 июля 2017

will_paginate gem примет параметр total_entries для ограничения количества записей для разбивки на страницы.

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

Это дает вам 3 страницы по 10 записей на каждой.

0 голосов
/ 03 октября 2011
people = Person.limit(100).paginate(:per_page => 5)
...