2012-10-23 14 views
5

Non capisco molto bene ancora come funziona rails_admin gem per creare una nuova azione.azioni personalizzate all'interno di rails_admin gem

Voglio creare un'azione con nome saldo in root rails_admin.

ho creato un file con nome rails_admin_balance.rb all'interno frontend/lib cartella come:

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 

ho creato un nuovo file sul /views/rails_admin/main/balance.html .erb

dentro il mio file rails_admin.rb ho

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 

Quando provo eseguire Server rotaie ottengo questo errore:

Uscendo

/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).... 

Dove sono l'errore?

Cosa sto facendo male?

Grazie mille!

risposta

9

Ho avuto lo stesso identico problema. Penso che sia perché il file rails_admin_[my_action].rb in/lib non viene caricato, e questo non è documentato nei documenti rails_admin.

Puoi provare a caricarlo da rails_admin.rb or just move all the code you have on rails_admin_ [my_action] .RB to the rails_admin.rb` di inizializzazione (incollarlo all'inizio del file).

C'è una terza opzione (solo se non si desidera riutilizzare l'azione), che IMHO sembra più pulito:

Sbarazzarsi della rails_admin_[my_action].rb (il vostro rails_admin_balance.rb) e riscrivere le vostre azioni all'interno rails_admin.rb come segue:

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

Basta aggiungere questo sul vostro rails_admin.rb

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

L'apertura del modulo Azioni sull'ambito RailsAdmin evita questo particolare errore. E le tue definizioni possono rimanere sul modulo Balance su lib.

Problemi correlati