Я еще не использовал (а) эту библиотеку, но насколько я могу разбираться в исходном коде, поиск Model # и Tire :: Search :: Search должен быть таким же. Если вы посмотрите на исходный код модели # поиск делает это (сводится к соответствующим частям):
def search(*args, &block)
query, options = args
s = Tire::Search::Search.new(options.delete(:index), options)
так вариантов просто передал через к инициализаторе Тир :: Поиск :: Поиск.
Но это только создает объект. Шины :: Поиск :: Поиск кажется внутренне использовать термины size
и from
вместо per_page
и page
. Таким образом, приведенный выше код продолжает так:
page = options.delete(:page)
per_page = options.delete(:per_page) || Tire::Results::Pagination::default_per_page
s.size(per_page.to_i) if per_page
s.from(page.to_i <= 1 ? 0 : (per_page.to_i * (page.to_i-1))) if page && per_page
так что кажется from
работает отличается от page
(в то время как size
и per_page
похожи). from
- абсолютная позиция. (Я не знаю, что именно Tire :: Результаты :: Pagination :: default_per_page добавляет здесь, возможно, некоторые значения по умолчанию, которые могут быть установлены.)
Чтобы прийти к выводу, мое обоснованное предположение состояло в том, что что-то вроде этого должно работать для вас:
search = Tire::Search::Search.new("items", size: 20, from: 0)
, где для других страниц позиции вы бы вычислить (per_page * (страница - 1))