2012-05-10 24 views
1

我是ActiveAdmin的新手,我試圖在出現某些情況時顯示大膽而大膽的警告。如何在每個請求中修改ActiveAdmin中的「標題」部分?

我不知道在閱讀文檔後如何做到這一點。

我設法做的最好的是有選擇地註冊頁面或不註冊它們,根據一些條件。其目的是有選擇地添加菜單元素。 這在dev中工作,但在生產中未能在每個請求中重新加載代碼時失敗。

if warnings 
    main_menu_title = fatal ? "Fatal Warnings" : "Warnings" 

    ActiveAdmin.register_page main_menu_title do 
    menu :priority => 99 
    end 
    ActiveAdmin.register_page "Warnings_job_count" do 
    menu :label => "#{delayed_job_count} delayed jobs", :parent => main_menu_title, :priority => 1 
    end 
    ActiveAdmin.register_page "Warnings_job_errors" do 
    menu :label => "#{delayed_job_error_count} delayed jobs with errors", :parent => main_menu_title, :priority => 2 
    end 
end 

因此,簡而言之,問題是...... 是否有可能在某處聲明塊,將在每一個請求執行,在所有頁面,並具有以添加元素的能力菜單,或以某種方式修改標題部分?

非常感謝!
丹尼爾

回答

3

您可以使用的東西這本爲這裏解釋https://stackoverflow.com/a/7218598/807442

# app/admin/views/header_renderer.rb 
module ActiveAdmin 
    module Views 
     class HeaderRenderer 
     def to_html 
      title + custom_block + global_navigation + utility_navigation 
     end 

     def custom_block 
      # Your custom block 
     end 
     end 
    end 
    end 

您也可以將項目添加到菜單是這樣的:

current_menu.add(main_menu_title , url_symbol, priority) 

# For sub-items 
main_menu = current_menu[main_menu_title] 
main_menu.add(sub_item_title, url_symbol, priority) 

不過,如果你添加這些,他們將在未來的請求中保留在那裏。所以您可能還需要在每個請求中刪除它們,然後僅添加它。爲此,請添加:

module ActiveAdmin 
    class Menu 
    def remove(name) 
     item = self[name] 
     return if item.nil? 
     @items.delete(item) 
    end 
    end 
end 

並且您可以按名稱刪除。

+0

非常好,那很完美!謝謝!! 我編輯了一下,以顯示如何添加自定義菜單項,以防將來幫助某人。謝謝!! –

相關問題