2015-06-23 52 views
1

我正在嘗試使用will_paginatefilterrific一起使用。但我發現了以下錯誤:will_paginate&filterrific:undefined method#total_pages'for#<Array:0x007f9f6b4a3320>

undefined method `total_pages' for # Array: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

嘗試添加一個新的文件,以配置/ initilizers和加入這一行'需要「will_paginate/array'' – Pavan

回答

0

避免在分頁集合中調用sort_by。將範圍添加到評估並指定filterrific的範圍。

asessment.rb 
class Assessment < ActiveRecord::Base 
    filterrific(
     available_filters: [ 
     :oldest_first 
     ] 
    ) 
    scope :oldest_first, lambda { order('created_at ASC') } 
+0

好感謝,但仍然不能解決問題 –

1

的問題是,你是鑄造一個ActiveRecord集合代理到一個數組有以下兩種方法:

  • .sort_by
  • .reverse

確保設置的順序使用ActiveRecord方法。這應該工作:.order('created_at DESC')

您也在調用分頁方法兩次:.page.paginate。一旦應該就夠了。

0

這是因爲您同時調用了「.page」和「.paginate」。我可以用下面的代碼。我知道你已經解決了這個問題,因爲這個問題是最近兩年發佈的,但我只是分享了我的經驗,以便在稍後面對這個問題的朋友。

@filterrific.find.page(params[:page]).per_page(10) 
相關問題