我想在定义 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
不起作用,并且文档似乎对这个问题保持沉默。
我想在定义 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
不起作用,并且文档似乎对这个问题保持沉默。
好的,这是一个丑陋的解决方案。
在 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
但是,当您拥有大量资源时,这肯定是不切实际的。