Ruby/Rails - ошибки разбиения на страницы неопределенного метода kaminari

Я не уверен, что я сделал, но каминари начал вести себя странно в моем приложении.

В моем контроллере:

@producers = Producer.order(:name).page(params[:page])

Посмотреть:

<%= paginate @producers %>

приводит к:

undefined method `num_pages' for #<ActiveRecord::Relation:0x000001026e6308>

Если я добавлю .per в свой контроллер:

@producers = Producer.order(:name).page(params[:page]).per(25)

я получил

undefined local variable or method `per' for #<ActiveRecord::Relation:0x0000010928ef60>

Наконец, как ни странно, если я передвину свой .order(:name) в конец, он сработает:

@producers = Producer.page(params[:page]).order(:name)

Я предполагаю, что какой-то другой драгоценный камень, который я установил, имеет область действия или метод page, который вызывает проблемы?

Спасибо.


person johnnycakes    schedule 02.08.2011    source источник


Ответы (4)


Ну просто разобрался. У меня был установлен Active Admin. Он установил will_paginate как зависимость.

В последних коммитах для Active Admin will_paginate заменено на kaminari.

Я изменил свой Gemfile, чтобы получить Active Admin из github. will_paginate убрали из моего комплекта и теперь все работает. Вы можете сделать это, поместив следующую строку в свой gemfile:

gem "activeadmin", git: "https://github.com/gregbell/active_admin"
person johnnycakes    schedule 02.08.2011
comment
как вы вытащили «Активного администратора» из github? - person flyingarmadillo; 27.07.2012

У меня была такая же проблема с другим камнем, для которого требовалось will_paginate. Проблема была решена с помощью этого фрагмента кода, взятого из wiki< /а> страница:

if defined?(WillPaginate)
  module WillPaginate
    module ActiveRecord
      module RelationMethods
        def per(value = nil) per_page(value) end
        def total_count() count end
      end
    end
    module CollectionMethods
      alias_method :num_pages, :total_pages
    end
  end
end

Поместите его в инициализатор.

person ramigg    schedule 12.07.2012

Чтобы решить проблему, включите gem 'kaminari' и удалите will_paginate. Поскольку я уже использовал will_paginate, я только что обновил свои текущие вызовы will_paginate на kaminari. Они очень похожи по реализации и достаточно легко меняются.

person Min Ming Lo    schedule 02.12.2011

Я попробовал решение johnnycakes, но оно продолжало выдавать мне слишком глубокие ошибки уровня стека на панели инструментов (аналогично https://github.com/gregbell/active_admin/issues/157)

Решение, которое я нашел, состояло в том, чтобы указать эту версию:

gem 'activeadmin', :git => 'git://github.com/gregbell/active_admin.git', :ref => '811f286fda3b6dfa91aa'
person Kyle Fleming    schedule 04.08.2011