Рельсы Sunspot Kaminari Максимальные результаты 30

Я использую Sunspot и Kaminari для разбиения на страницы. Однако я вижу, что максимальное количество возвращаемых результатов (хотя их больше) равно 30.

Вот мой код:

Kaminari.paginate_array(search.results).page(params[:page]).per(10)

Пожалуйста, сообщите, как вернуть все результаты и соответственно разбить на страницы.


person Brian    schedule 11.02.2014    source источник


Ответы (1)


Все результаты Solr разбиты на страницы... По умолчанию Sunspot запрашивает первые 30 результатов Solr. В вашем примере вы разбиваете на страницы массив первых 30 результатов, возвращаемых Solr.

Мне проще всего просто вызвать paginate в блоках поиска в моих контроллерах...

@search = Sunspot.search(BlogPost) do
  # filters...
  paginate(page: params[:page], per_page: 10)
end

Затем используйте помощник Каминари по разбивке на страницы в моих представлениях...

<%= paginate @search.results %>

* вы можете использовать @search.hits, если не хотите загружать экземпляры модели


Кроме того, похоже, что вы можете передать :total_count в качестве ключевого слова аргумент метода paginate_array Каминари. Так что это должно работать, если вы хотите придерживаться метода, который вы используете выше...

Kaminari.paginate_array(search.results, total_count: search.total).page(params[:page]).per(10)
person ncherro    schedule 11.02.2014
comment
Эй, вы отвечаете правильно. Спасибо. Оказывается, я вызывал paginate вне блока поиска :( - person Brian; 11.02.2014