2016-06-07 63 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