2015-06-23 2 views
1

Я пытаюсь использовать will_paginate в сочетании с filterrific. Но я получаю следующее сообщение об ошибке:will_paginate & filterrific: undefined method `total_pages 'для # <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 по разбивке на страницы. Добавьте область для Оценки и укажите область фильтрации.

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

Okay спасибо, но по-прежнему не решает проблему –

1

Вопрос заключается в том, что вы отливку коллекции прокси ActiveRecord в массив со следующими двумя способами:

  • .sort_by
  • .reverse

Убедитесь, чтобы установить порядок используя метод ActiveRecord. Это должно работать: .order('created_at DESC').

Вы также вызываете метод разбивки на страницы дважды: .page и .paginate. Как-то должно быть достаточно.

0

Это потому, что вы называете «.page» и «.paginate». Я в порядке с кодом ниже. Я знаю, что вы уже решили это, потому что вопрос отправлен последние два года, но я просто делюсь своим опытом для друга, который столкнется с этим вопросом позже.

@filterrific.find.page(params[:page]).per_page(10) 
Смежные вопросы