无法使用ActiveAdmin帮助程序

时间:2016-06-07 15:03:14

标签: ruby-on-rails ruby ruby-on-rails-4 activeadmin

我想在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

1 个答案:

答案 0 :(得分:1)

这不起作用,因为row方法不是帮助程序,它来自ActiveAdmin DSL。

虽然我建议反对它,但是你想要实现的目标可以通过猴子修补ActiveAdmin::Views::AttributesTable defines行方法来实现。

您也可以创建一个帮助程序并自行传递,使用哪个行方法可以访问。但是,如果在AttributesTable上下文之外使用它将失败。

我建议您只使用您编写的最后一段代码,这是恕我直言的简明扼要:

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