在activeadmin中排序父菜单项
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了在activeadmin中排序父菜单项相关的知识,希望对你有一定的参考价值。
我有一个菜单,有多个:父项。使用:优先级我可以在下拉菜单中对项目进行排序。
如何对主菜单父项进行排序?我正在使用最新版本的activeadmin
答案
我找到了自己帮助自己,我找到了:
如果将以下内容放入config / initializers / 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
以上是关于在activeadmin中排序父菜单项的主要内容,如果未能解决你的问题,请参考以下文章
使用导航从工具栏菜单项单击在片段之间传递数据 - Kotlin