2016-06-07 36 views
0

我想在ActiveAdmin中使用自定義方法。我在app/helpers/active_admin/views_helper.rb添加輔助文件:無法使用ActiveAdmin幫助程序

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

但我有一個錯誤:

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

很顯然,我應該包括一些模塊使用ActiveAdmin方法,但我找不到究竟是什麼。

PS:我想用currency_row :amount代替:

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

回答

1

這不起作用,因爲row方法不是一個幫手,它來自ActiveAdmin DSL。

雖然我會反對它,但你試圖完成的工作可以通過猴子修補類ActiveAdmin::Views::AttributesTable其中defines行方法來實現。

您也可以創建一個幫助器並將其自行傳遞,使用哪種行方法可以訪問。但是,如果在AttributesTable上下文之外使用它將會失敗。

我只想用代碼的最後片斷你寫信了,這是恕我直言足夠簡潔建議:

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

謝謝回答 – zishe