2012-12-17 54 views
1

我有一个菜单,其中包含多个父项: With:优先级我可以在下拉菜单中对项目进行排序。在activeadmin中排序父菜单项

如何排序我的主菜单父项目? 我使用的是最新版本的activeadmin

回答

4

的我顺手拿了一个黑客,我发现:

如果你把以下到配置/初始化/ 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 

这对我很好。

+0

这工作得很好!感谢Argued – wintondeshong

0

上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 
1

可以实现默认的活动管理的初始化中一样,不需要黑客:

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 
+1

这是在https://activeadmin.info/2-resource-customization.html上建议的方法 –