我有一个菜单,有多个:父项目。 附:我的优先级可以在下拉菜单中的项目进行排序。
如何将我的主菜单的父项进行排序? 我使用的是最新版本的activeadmin
我有一个菜单,有多个:父项目。 附:我的优先级可以在下拉菜单中的项目进行排序。
如何将我的主菜单的父项进行排序? 我使用的是最新版本的activeadmin
我顺手拿了黑客,我发现:
如果你把以下到配置/初始化/ active_admin.rb的设置块。
它使用第一显示子菜单项的优先级,以指示父项的排序优先级。
class ::ActiveAdmin::Views::TabbedNavigation
def priority_for(item)
child_item = item.children.detect { |child| display_item?(child) }
child_item ? child_item.priority : item.priority
end
private :priority_for
# Returns an Array of items to display
def displayable_items(items)
items.select do |item|
display_item? item
end.sort { |i1, i2| priority_for(i1) <=> priority_for(i2) }
end
end
这对我来说工作得很好。
可以实现默认的活动管理的初始化中相同,无需黑客:
config.namespace :admin do |admin|
admin.build_menu do |menu|
menu.add label: "My first item", priority: 1
menu.add label: "My second item", priority: 2
menu.add label: "My third item", priority: 3
end
end
# config/initializers/active_admin.rb
在ActiveAdmin V = 0.4.4这个小修改后的版本为我工作作为初始化:
class ::ActiveAdmin::Views::TabbedNavigation
def priority_for(item)
item.children.map(&:priority).min || item.priority
end
private :priority_for
def menu_items
menu.items.sort { |i1, i2| priority_for(i1) <=> priority_for(i2) }
end
end