16

我成功安装了 ActiveAdmin:

我的宝石文件代码:

来源“ 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>
4

8 回答 8

37

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

这个对我有用。

于 2013-02-28T11:56:58.330 回答
25

这个帮助了我:

 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
于 2013-11-30T08:54:36.680 回答
10

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

Kaminari.configure do |config|
  config.page_method_name = :per_page_kaminari
end

根据我的经验,我必须重新启动服务器才能使其正常工作。就这样。

于 2014-01-23T21:10:52.367 回答
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
于 2015-11-29T13:13:04.963 回答
4

如果你同时使用 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
于 2018-07-04T13:50:55.817 回答
3

上面的答案不再起作用。@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

我自己试过了。作品。

于 2018-06-22T10:32:25.330 回答
0

我遇到了同样的问题,我的应用程序从 WillPaginate 切换到 Kaminari。

这是一个简单的更改: paginate(page:1,per_page:10) 变为 page(1).per(10)

我想这取决于 willPaginate 与您的应用程序的结合程度。

于 2014-09-29T21:36:49.230 回答
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
于 2016-11-29T06:02:59.250 回答