如何解决如何使用 Rails 中的 Pagy gem 对多个模型进行分页?
我使用 Searchkick 和 Pagy gem 对我的搜索结果进行分页,如果我只在一个模型上进行搜索和分页,效果很好,但我不知道该怎么做当我需要将多个模型组合成一组 Searchkick 搜索结果时,这与 Pagy 一起使用。
我尝试使用 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 数组来执行此操作,那么您应该如何执行此操作?
解决方法
你可以把它放在页面初始化器中:
Searchkick.extend Pagy::Searchkick
然后就可以照常使用了:
results = Searchkick.pagy_search(query,models: [PressRelease,BlogPost,User])
@pagy,@results = pagy_searchkick(results,items: 10)
它没有记录,因此您可能应该为丢失的文档创建一个 Documentation Issue。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。