Rails: activeadmin, undefined метод `per 'для # <ActiveRecord:: Relation: 0x4d15ee0>
Я успешно установил ActiveAdmin:
Мой код gemfile:
source 'https://rubygems.org'
gem 'rails', '3.2.10'
# Bundle edge Rails instead:
# gem 'rails', :git => 'git://github.com/rails/rails.git'
gem 'sqlite3'
# Gems used only for assets and not required
# in production environments by default.
group :assets do
gem 'sass-rails', '~> 3.2.3'
gem 'coffee-rails', '~> 3.2.1'
# See https://github.com/sstephenson/execjs#readme for more supported runtimes
# gem 'therubyracer', :platforms => :ruby
gem 'uglifier', '>= 1.0.3'
end
gem 'jquery-rails'
gem 'twitter-bootstrap-rails'
gem 'activeadmin'
# gem "meta_search", '>= 1.1.0.pre'
gem "spud_photos"
gem 'devise'
gem 'cancan'
gem 'rolify'
и я сделал это:
bundle
rails g active_admin:install
rake db:migrate
rails g active_admin:resource product
Я связал некоторые модели с ActiveAdmin.
Ошибка после нажатия на панели управления ссылкой продукта:
undefined method `per' for #<ActiveRecord::Relation:0x4d15ee0>
Ответы
Ответ 1
Active Admin нужен kaminari pagination
Если вы хотите использовать, будет разбита на страницы, вы можете сделать псевдоним для того, чтобы функции paginate соответствовали каминари:
# config/initializers/will_paginate.rb
if defined?(WillPaginate)
module WillPaginate
module ActiveRecord
module RelationMethods
alias_method :per, :per_page
alias_method :num_pages, :total_pages
end
end
end
end
module ActiveRecord
class Relation
alias_method :total_count, :count
end
end
И этот работал у меня.
Ответ 2
Это помогло мне:
if defined?(WillPaginate)
ActiveSupport.on_load :active_record do
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
end
Ответ 3
Вы можете создать инициализатор для Kaminari, например:
Kaminari.configure do |config|
config.page_method_name = :per_page_kaminari
end
По моему опыту, мне пришлось перезапустить сервер, чтобы он работал. Все это.
Ответ 4
Я использую Ruby 2.1.5p273 и Rails 4.1.8. Я столкнулся с той же проблемой.
@mohamed-ibrahim ответ решил ошибку underfined method 'per'
, но получил еще одну ошибку
Отображение c:/RailsInstaller/Ruby2.1.0/lib/ruby/gems/2.1.0/bundler/gems/activeadmin-06bf79c58216/app/views/active_admin/resource/index.html.arb, где строка # 2 поднята: неправильное количество аргументов (0 для 1)
Добавление alias_method :total_count, :count
исправлено.
if defined?(WillPaginate)
module WillPaginate
module ActiveRecord
module RelationMethods
alias_method :per, :per_page
alias_method :num_pages, :total_pages
alias_method :total_count, :count
end
end
end
end
Ответ 5
У меня была такая же проблема, и я переключился с WillPaginate на Kaminari для своего приложения.
Это простое изменение: paginate (страница: 1, per_page: 10) становится страницей (1).per(10)
Я думаю, это зависит от того, насколько глубоко будетPaginate запутан с вашим приложением.
Ответ 6
Это сработало для меня:
Инициализаторы/will_paginate.rb
if defined?(WillPaginate)
module WillPaginate
module ActiveRecord
module RelationMethods
alias_method :per, :per_page
alias_method :num_pages, :total_pages
alias_method :total_count, :total_entries
end
end
end
end