Неопределенная страница метода для ошибки #<Array: 0xc347540> kaminari "page". rails_admin

Я использую rails_admin. когда я иду на определенный ресурс. по типу URL

localhost:3000/admin/rule 

чем это дает мне эту ошибку. код является:

scope = Rule.all
scope.page(1).per(2)

, приведенный выше код записан в rails_admin gem.in в файле с именем mongoid.rb, который находится в папке адаптеров. полный журнал это:

NoMethodError (undefined method `page' for #<Array:0xcea7408>):
mongoid (2.4.8) lib/mongoid/criteria.rb:385:in  `method_missing'
/home/usman/.rvm/gems/ruby-1.9.2-p290@system/bundler/gems/kaminari-809105ad782a/lib/kaminari/models/mongoid_extension.rb:11:in `page'
/home/usman/.rvm/gems/ruby-1.9.2-p290@system/bundler/gems/rails_admin-069819944cc9/lib/rails_admin/adapters/mongoid.rb:37:in `all'
/home/usman/.rvm/gems/ruby-1.9.2-p290@system/bundler/gems/rails_admin-069819944cc9/app/controllers/rails_admin/main_controller.rb:127:in `get_collection'
/home/usman/.rvm/gems/ruby-1.9.2-p290@system/bundler/gems/rails_admin-069819944cc9/app/controllers/rails_admin/main_controller.rb:39:in `list_entries'
/home/usman/.rvm/gems/ruby-1.9.2-p290@system/bundler/gems/rails_admin-069819944cc9/lib/rails_admin/config/actions/index.rb:30:in `block (2 levels) in <class:Index>'

Что я должен сделать, чтобы устранить эту ошибку?

4 ответа

Я уже давно сталкиваюсь с этой проблемой, используя Mongoid. Иногда обновление страницы в RailsAdmin может исправить это.

Я понял, что проблема в том, что хуки Kaminari не инициализируются в моей среде, поэтому модели, которые используют методы расширения Kaminari, не имеют их в наличии.

Я просто взял следующую строку из railtie Каминари и поместил ее в начало инициализатора rails_admin:

Kaminari::Hooks.init

Теперь, похоже, у меня все работает. Однако я не знаю, почему обратный вызов ActiveSupport не выполняет этот код.

Вы не можете вызывать методы Каминари на Array, так как Rule.all вернусь Array,

Таким образом, вы должны сделать что-то вроде этого: Rule.page(1).per(2)

Вот документация и примеры использования Kaminari:

https://github.com/amatsuda/kaminari

Использовать этот

Kaminari.paginate_array(Rule.all).page(params[:page])

Решение Кадера великолепно! Единственное, что я обнаружил, я должен добавить.per, чтобы все заработало.

Kaminari.paginate_array(Rule.all).page(params[:page]).per(PER_PAGE_RECORDS)
Другие вопросы по тегам