2013-02-19 11 views
11

mam zainstalowanego ActiveAdmin powodzeniem:szyn: activeadmin, metoda niezdefiniowany `za” dla # <ActiveRecord :: Powiązania: 0x4d15ee0>

Mój kod gemfile:

źródło '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' 

i zrobiłem to:

bundle 
rails g active_admin:install 
rake db:migrate 
rails g active_admin:resource product 

Połączyłem niektóre modele z ActiveAdmin.

Błąd po kliknięciu w desce rozdzielczej na informacje o produkcie:

undefined method `per' for #<ActiveRecord::Relation:0x4d15ee0> 
+0

To pomogło mi: http://tech-brains.blogspot.in/2012/11/kaminari-willpaginate -incompatibility.html – RAJ

Odpowiedz

29

Aktywny Admin potrzebne kaminari paginacji Jeśli chcesz korzystać będzie podzielony na strony, można zrobić alias będzie paginate funkcje dopasować Kaminari jedno:

# 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 

I ten pracował dla mnie.

+1

Wspaniale, że zadziałało dla mnie, proszę, zatwierdź to. –

19

Ten pomógł mi:

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 
+0

Nie wymyślaj, aby dodać ten kod do pliku i umieścić go w folderze config/initializers.Nazwałbym plik will_paginate.rb, ale użyłbym tego, co chciałbyś, żeby ci przypomniało, do czego służy. – JCC

+0

i nie zapomnij zrestartować serwera – truongnm

8

Można tworzyć inicjator dla Kaminari, tak:

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

Z mojego doświadczenia wynika, musiałem zrestartować serwer, aby to działało. To wszystko.

0

Miałem ten sam problem i przeszedłem z WillPaginate do Kaminari dla mojej aplikacji.

Jest to prosta zmiana: paginate (strona: 1, per_page: 10) staje się strona (1) .per (10)

Myślę, że to zależy od tego jak głęboko willPaginate jest uwikłana z aplikacji.

4

Używam Ruby 2.1.5p273 i Rails 4.1.8. Napotkałem ten sam problem. @ odpowiedzi Mohamed-Ibrahim „s rozwiązał błąd underfined method 'per', ale dostał inny błąd

Pokazuje c: /RailsInstaller/Ruby2.1.0/lib/ruby/gems/2.1.0/bundler/gems/activeadmin -06bf79c58216/app/views/active_admin/resource/index.html.arb gdzie linia nr 2 podniesiony: zła ilość argumentów (0 do 1)

Dodajesz alias_method :total_count, :count naprawił.

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 
0

Ten pracował dla mnie:

inicjalizatory/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 
Powiązane problemy