我正在使用带有ActiveAdmin gem的Runy On Rails。在我的管理配置中,我有一个AdminPage(Clients
),它不应该在通常的菜单中。它应该位于一个相关AdminPage(Company
)的navigatio菜单中。通过这种方式,我可以看到公司的客户。
所以,在我的app/admin/people.rb
我有:
navigation_menu :company
在这个菜单中,我也有其他元素,一切都像魅力一样。现在,我想对这些项目应用自定义订单。但是当我使用priority
时(正如我在应用程序中常用的菜单项中使用的那样),我的模型会丢失navigation_menu
。
所以,我不能拥有自定义优先级的子菜单。
我可以修改navigation_menu
上的优先顺序吗?
答案 0 :(得分:2)
我认为这确实是ActiveAdmin问题。
我设法使用下面add_to_menu方法所述的猴子补丁来解决。
这不是最优雅的方法,但是它可以在AA中解决问题的同时完成工作。
想象一下,您需要2个父菜单项Clients
和Product
,并且每个菜单项都有2个子菜单。所有这些管理页面的范围都在navigation_menu :company
内,例如:
Clients
-> 1. ClientAddresses
-> 2. ClientProfiles
Products
-> 1. ProductCategories
-> 2. ProductCosts
所以猴子的补丁像这样:
# Put this in app/admin/components/menu.rb
module ActiveAdmin
class Resource
module Menu
def add_to_menu(menu_collection)
add_parent_options if forced_parents.keys.include? resource_name.plural.to_sym
if include_in_menu?
@menu_item = menu_collection.add navigation_menu_name, menu_item_options
end
end
def add_parent_options
priority, parent = forced_parents[resource_name.plural.to_sym]
@menu_item_options[:priority] = priority
@menu_item_options[:parent] = I18n.t("active_admin.menus.#{parent}")
end
def forced_parents
@forced_parents ||=
{
client_addresses: [1, :clients],
client_profiles: [2, :clients],
product_categories: [1, :products],
product_costs: [2, :products],
}
end
end
end
祝你好运