2

我想在定义 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不起作用,并且文档似乎对这个问题保持沉默。

4

1 回答 1

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

但是,当您拥有大量资源时,这肯定是不切实际的。

于 2013-04-17T07:59:32.363 回答