2016-06-07 10 views
0

Ich möchte benutzerdefinierte Methoden in ActiveAdmin verwenden. Ich habe Helfer Datei in app/helpers/active_admin/views_helper.rb:ActiveAdmin-Helfer können nicht verwendet werden

module ActiveAdmin::ViewsHelper 
    def currency_row(name) 
    row name do 
     number_to_currency(deal.send(name), precision: 0) 
    end 
    end 
end 

Aber ich habe nächsten Fehler:

undefined method `row' for #<#<Class:0x007fe83f0c0650>:0x007fe83f0b92b0> 

Natürlich, ich soll einige Module umfasst ActiveAdmin Methoden zu verwenden, aber ich kann nicht finden, was genau.

PS: Ich möchte currency_row :amount statt verwenden:

row :amount do |deal| 
    number_to_currency(deal.amount, precision: 0) 
end 

Antwort

1

Das funktioniert nicht, weil row Methode kein Helfer ist und es kommt von ActiveAdmin DSL.

Während ich dagegen empfehlen würde, was Sie erreichen möchten, kann durch Monkey Patching der Klasse ActiveAdmin::Views::AttributesTable die defines die Zeile Methode erreicht werden.

Sie können alternativ einen Helper erstellen und selbst übergeben, mit dem auf welche Zeilenmethode zugegriffen werden kann. Es wird jedoch fehlschlagen, wenn es außerhalb des AttributesTable-Kontexts verwendet wird.

würde ich empfehlen, nur das letzte Code-Snippet verwenden Sie geschrieben haben, die meiner Meinung nach ausreichend präzise ist:

row :loan_amount do |deal| 
    number_to_currency(deal.amount, precision: 0) 
end 
+0

Vielen Dank für Antwort – zishe

Verwandte Themen