我想在ActiveAdmin
中使用自定义方法。我在app/helpers/active_admin/views_helper.rb
中添加了帮助文件:
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
答案 0 :(得分:1)
这不起作用,因为row
方法不是帮助程序,它来自ActiveAdmin DSL。
虽然我建议反对它,但是你想要实现的目标可以通过猴子修补ActiveAdmin::Views::AttributesTable
defines行方法来实现。
您也可以创建一个帮助程序并自行传递,使用哪个行方法可以访问。但是,如果在AttributesTable上下文之外使用它将失败。
我建议您只使用您编写的最后一段代码,这是恕我直言的简明扼要:
row :loan_amount do |deal|
number_to_currency(deal.amount, precision: 0)
end