Rails ActiveAdmin DSL助手

时间:2013-04-16 12:52:21

标签: ruby-on-rails activeadmin

我想在定义ActiveAdmin页面时使用辅助方法。特别是:

ActiveAdmin.register Catalog do
  menu parent: menu_title(:catalog)
end

,其中

def menu_title(s)
  proc { I18n.t("active_admin.menus.#{s}") }
end

我在哪里放menu_title?将它放在ViewsHelper中不起作用,文档似乎对此问题保持沉默。

1 个答案:

答案 0 :(得分:1)

好的,这是一个丑陋的解决方案。

在ActiveAdmin初始化程序文件中,添加到底部(块外):

require Rails.root.join('lib', 'active_admin_dsl.rb')

使用以下内容创建文件lib/active_admin_dsl.rb

class ActiveAdmin::DSL
  def menu_title(s)
    proc { I18n.t("active_admin.menus.#{s}") }
  end

  # or whatever
end

另一个不那么丑陋但更麻烦的解决方案是编写一个模块,然后在每个注册资源中手动包含它:

ActiveAdmin.register Foo do
  include DSLHelper
end

但是当你拥有很多的资源时,这当然是不切实际的。