2012-12-17 38 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上建議的方法 –