我成功安装了ActiveAdmin:
我的gemfile代码:
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>
答案 0 :(得分:32)
Active Admin需要kaminari分页 如果你想使用will paginate,你可以为will paginate函数创建别名来匹配kaminari:
# 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
这个对我有用。
答案 1 :(得分:20)
这个帮助了我:
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
答案 2 :(得分:8)
您可以为Kaminari创建一个初始化程序,如下所示:
Kaminari.configure do |config|
config.page_method_name = :per_page_kaminari
end
根据我的经验,我必须重新启动服务器才能使其正常工作。就这样。
答案 3 :(得分: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
答案 4 :(得分:0)
我有同样的问题,并从WillPaginate切换到我的应用程序的Kaminari。
这是一个简单的改变:paginate(page:1,per_page:10)变为page(1).per(10)
我想这取决于将阴茎与你的应用程序陷入困境。
答案 5 :(得分:0)
这对我有用:
初始化/ 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
答案 6 :(得分:0)
以上答案不再起作用。 @zitoon给了here一个更新的答案:
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
我自己尝试过。有效。
答案 7 :(得分:0)
如果同时使用kaminari和will_paginate,则肯定会遇到此错误。简而言之,kaminari和will_paginate彼此不兼容。如果您正在使用rails_admin(使用kaminari进行分页)并且还使用will_paginate,则需要将以下代码添加到config目录下的一个初始化程序中,或者您可以创建一个新文件,假设名称为'will_paginate',然后添加代码,并将其放入初始化程序目录。
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