2012-10-23 32 views
5

Nie rozumiem bardzo dobrze, ale jak to działa rails_admin gem, aby utworzyć nową akcję.Niestandardowe akcje wewnątrz rails_admin gem

Chcę utworzyć akcję o nazwie saldo w katalogu głównym rails_admin.

Stworzyłem plik o nazwie rails_admin_balance.rb wewnątrz myapp/lib Folder jak:

require 'rails_admin/config/actions' 
require 'rails_admin/config/actions/base' 

module RailsAdminBalance 
end 

module RailsAdmin 
    module Config 
    module Actions 
     class Balance < RailsAdmin::Config::Actions::Base 
     RailsAdmin::Config::Actions.register(self) 
     register_instance_option :object_level do 
      true 
     end 
     register_instance_option :link_icon do 
     'icon-eye-open' 
     end 
     register_instance_option :root? do 
      true 
     end 
     end 
    end 
    end 
end 

Stworzyłem nowy plik na /views/rails_admin/main/balance.html .erb

wewnątrz mojego pliku rails_admin.rb mam

config.actions do 
dashboard      # mandatory 
# collection actions 
index       # mandatory 
new 
export 
history_index 
bulk_delete 
# member actions 
show 
edit 
delete 
history_show 
show_in_app 
balance 
end 

gdy próbuję uruchomić serwer szyny otrzymuję ten błąd:

Zamykanie

/home/ubuntu/Desktop/myapp/config/initializers/rails_admin.rb:33:in `block (2 levels) in <top (required)>': undefined method `balance' for RailsAdmin::Config::Actions:Module (NoMethodError).... 

Gdzie ja się błąd?

Co robię źle?

Dziękuję bardzo!

Odpowiedz

9

Miałem dokładnie ten sam problem. Myślę, że to dlatego, że plik rails_admin_[my_action].rb pod/lib nie jest ładowany, a to nie jest udokumentowane w dokumentacji rails_admin.

Możesz spróbować załadować go od rails_admin.rb or just move all the code you have on rails_admin_ [my_action] .rb to the inicjator rails_admin.rb` (wklej go na początku pliku).

Jest jeszcze trzecia opcja (tylko jeśli nie chcesz ponownie użyć działania), które IMHO wygląda czystsze:

Pozbyć się rails_admin_[my_action].rb (swojej rails_admin_balance.rb) i przepisać swoje działania wewnątrz rails_admin.rb następująco:

config.actions do 
    dashboard      # mandatory 
    # collection actions 
    index       # mandatory 
    new 
    export 
    history_index 
    bulk_delete 
    # member actions 
    show 
    edit 
    delete 
    history_show 
    show_in_app 

    member :balance do 
    link_icon 'icon-eye-open' 
    root? true 
    end 
end 
5

Wystarczy dodać to na rails_admin.rb

module RailsAdmin 
    module Config 
    module Actions 
     class Balance < RailsAdmin::Config::Actions::Base 
     RailsAdmin::Config::Actions.register(self) 
     end 
    end 
    end 
end 

Otwarcie modułu Actions w zakresie RailsAdmin pozwala uniknąć tego konkretnego błędu. A twoje definicje mogą pozostać w module Balance na lib.

Powiązane problemy