Rails:activeadmin,未定义的方法`per'for#<ActiveRecord :: Relation:0x4d15ee0>

ubu*_*ral 12 activeadmin

我成功安装了ActiveAdmin:

我的gemfile代码:

来源' 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'
Run Code Online (Sandbox Code Playgroud)

我这样做了:

 bundle
 rails g active_admin:install
 rake db:migrate
 rails g active_admin:resource product
Run Code Online (Sandbox Code Playgroud)

我将一些模型链接到ActiveAdmin.

单击产品链接上的仪表板后出错:

 undefined method `per' for #<ActiveRecord::Relation:0x4d15ee0>
Run Code Online (Sandbox Code Playgroud)

moh*_*him 32

活动管理员需要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
Run Code Online (Sandbox Code Playgroud)

这个对我有用.

  • 太好了,它对我有用,谢谢,请批准这个 (3认同)

drK*_*eso 21

这个帮助了我:

 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
Run Code Online (Sandbox Code Playgroud)


hma*_*ezd 8

您可以为Kaminari创建初始化程序,如下所示:

Kaminari.configure do |config|
  config.page_method_name = :per_page_kaminari
end
Run Code Online (Sandbox Code Playgroud)

根据我的经验,我不得不重新启动服务器以使其工作.就这样.


Chi*_*hor 5

上面的答案不再有效。@zitoon在这里给出了更新的答案:

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
Run Code Online (Sandbox Code Playgroud)

我自己尝试过。作品。