我用pagy。我将两个模型合并为一个,并在合并后的模型上使用pagy。我收到这个错误:
undefined method `offset' for #<Array:0x00007f886f88b3b0>
下面代码的最后一行被突出显示。
我的代码:
@problems = Problem.me_and_friends(current_user)
@activities = Activity.me_and_friends(current_user)
@combine = (@problems + @activities).sort{|a,b| a.created_at <=> b.created_at }
@pagy, @combined = pagy_countless(@combine, items:100, link_extra: 'class="" style="color:black; margin:3px;"')
单独对@problems使用分页就可以很好地工作。
我很感激任何帮助。
2条答案
按热度按时间fruv7luv1#
一旦调用
(@problems + @activities)
,就会将ActiveRecord::Relation
转换为array
(这也不好,因为要将所有数据库行加载到内存中,排序,然后对它们进行分页)。Pagy期望ActiveRecord::Relation工作,因此出现错误。您可以考虑多种解决方案,
Problem
或Activity
的引用表)更新日期:2021年6月21日
如果你使用的是Rails 6,它引入了Delegated Types的概念,非常适合这个场景。链接中给出的示例提到了跨不同表的分页问题。
6rvt4ljy2#
pagy可以使用数组,请按照以下步骤操作
在# config/initializers/pagy.rb中添加以下行
然后你可以在控制器中这样使用它