【发布时间】:2021-09-03 13:25:38
【问题描述】:
我使用Searchkick 和Pagy gem 对我的搜索结果进行分页,如果我只在一个模型上搜索和分页,效果很好,但我不知道如何使用Pagy 来执行此操作我需要将多个模型组合成一组 Searchkick 搜索结果。
我尝试使用 Pagy 的“array extra”将所有单独的 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 的“Array Extra”的文档警告:
如果数组中的数据来自某个数据库或其他持久存储 (即不是一些内存存储),那么您绝对应该查看 你的代码
这正是我想要做的。使用 Pagy 对来自多个模型的 Searchkick 结果进行分页似乎应该是可能的。如果您不应该使用 Pagy 数组来执行此操作,那么您应该如何执行此操作?
【问题讨论】:
标签: ruby-on-rails ruby pagination searchkick pagy