Как разбить несколько моделей на страницы с помощью гема Pagy в Rails?
Я использую Searchkick с для результатов поиска на страницы, и он отлично работает, если я ищу и гемом Pagyразбиваюразбивки на страницы только одну модель, но я не могу понять, как это сделать с Pagy, когда мне нужно объединить несколько моделей в один набор результатов поиска Searchkick.
Я попытался использовать « » Pagy, чтобы объединить все отдельные запросы модели Searchkick в массив, а затем просмотреть результаты в представлении, но это не дало никаких результатов поиска.
Вот код контроллера, который работает для одной модели:
query = params[:q].presence || "*"
results = BlogPost.pagy_search(query, suggest: true, per_page: 20)
@pagy, @results = pagy_searchkick(results, items: 10)
И в представлении:
<%= pagy_nav(@pagy).html_safe %>
Следующее работает как комбинированный запрос Searchkick для нескольких моделей, но не разбивается на страницы:
@search_results = Searchkick.search(query, models: [PressRelease, BlogPost, User])
Как тогда я должен разбивать несколько моделей на страницы? Документация для Pagy's "дополнительный массивArray Extra " предупреждает:
если данные в массиве поступают из какой-либо БД или другого постоянного хранилища (т.е. не из хранилища в памяти), вам обязательно нужно просмотреть свой код.
Это именно то, что я пытаюсь сделать. Использование Pagy для разбивки на страницы результатов Searchkick из нескольких моделей кажется чем-то возможным. Если вы не должны использовать для этого массив Pagy, то как вы должны это делать?
1 ответ
Вы можете поместить это в инициализатор pagy:
Searchkick.extend Pagy::Searchkick
Затем вы можете использовать его как обычно:
results = Searchkick.pagy_search(query, models: [PressRelease, BlogPost, User])
@pagy, @results = pagy_searchkick(results, items: 10)
Это не задокументировано, поэтому вам, вероятно, следует создать проблему документации для отсутствующей документации.