我正在尝试将will_paginate与filterrific结合使用。但我收到以下错误:
#Array的未定义方法`total_pages':0x007f9f6b4a3320>
我的控制器操作:
def index
@filterrific = initialize_filterrific(
current_user.assessments,
params[:filterrific],
:select_options => {
sorted_by: Assessment.options_for_sorted_by },
:persistence_id => false,
) or return
@assessments = @filterrific.find.page(params[:page]).paginate(page: params[:page], per_page: 10).sort_by &:created_at
@assessments.reverse!
end
查看:
<%= render(
partial: 'list',
locals: { assessments: @assessments }
) %>
</div>
部分:
<div id="filterrific_results">
<% @assessments.each do |assessment| %>
....
<% end %>
</div>
<%= will_paginate assessments %>
我哪里错了?
答案 0 :(得分:1)
问题是您使用以下两种方法将ActiveRecord集合代理转换为数组:
.sort_by
.reverse
确保使用ActiveRecord方法设置顺序。这应该有效:.order('created_at DESC')
。
您还调用了两次分页方法:.page
和.paginate
。一次就够了。
答案 1 :(得分:0)
避免在分页集合上调用sort_by。将范围添加到评估中并指定filterrific的范围。
asessment.rb
class Assessment < ActiveRecord::Base
filterrific(
available_filters: [
:oldest_first
]
)
scope :oldest_first, lambda { order('created_at ASC') }
答案 2 :(得分:0)
这是因为您要同时拨打&#34; .page&#34;和&#34; .paginate&#34;。我可以使用以下代码。我知道你已经解决了这个问题,因为这个问题是在过去的两年里发布的,但我只是分享了我以后会遇到这个问题的朋友的经历。
@filterrific.find.page(params[:page]).per_page(10)