Ruby / Rails - неопределенные ошибки разбивки на страницы - PullRequest
3 голосов
/ 03 августа 2011

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

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

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

view:

<%= 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, вызывающий проблемы?

Спасибо.

Ответы [ 4 ]

8 голосов
/ 03 августа 2011

Ну, просто разобрался. У меня было установлено 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"
5 голосов
/ 12 июля 2012

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

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

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

1 голос
/ 03 декабря 2011

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

0 голосов
/ 04 августа 2011

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

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

gem 'activeadmin', :git => 'git://github.com/gregbell/active_admin.git', :ref => '811f286fda3b6dfa91aa'
...