是否可以检索Active Admin界面的所有已注册资源?
我在活动管理员中注册了很多资源,我希望有一个已注册资源的列表,以便它可以放入我的下拉框中。
可以这样做吗?
答案 0 :(得分:2)
我保证必须有更简洁的方法,但您可以通过访问已定义的命名空间中的资源集合来访问已添加到AA的模型。例如,如果您在:admin命名空间
中定义了AA > ActiveAdmin.application.namespace(:admin).resources.select {|r| r.respond_to? :resource_class_name}.map(&:resource_class_name)
将生成类名称数组..
=> ["::Activity", "::ActivityType", "::AdminUser"]
它会为您提供一个可以在按下按钮中按下的项目列表。
答案 1 :(得分:0)
# I came up with this to generate a hash of
# :namespace => array of arrays containing 2 elements
# [title, link]
#
# With this <strikethrough>it should be trivial to</strikethrough> you can
# create a clickable select.
Hash[*
ActiveAdmin.
application.
namespaces.
collect{ |ns,v| [
ns,
v.resources.
keys.
select { |k|
r = ActiveAdmin.application.namespaces[ns].resources.find_by_key(k)
r.respond_to?(:resource_class_name) && !r.belongs_to?
}.
collect{|k|
[
k,
begin
Rails.application.routes.url_helpers.send(
(
"#{ns}_" +
k.underscore.pluralize.gsub('/','_') +
"_index_path"
).to_sym
)
rescue
Rails.application.routes.url_helpers.send(
(
"#{ns}_" +
k.underscore.pluralize.gsub('/','_') +
"_path"
).to_sym
)
end
]
}
]}.
flatten(1)
]