2012-05-10 15 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

優秀、それは完璧でした!ありがとうございました!! 将来的に誰かを助ける場合に備えて、カスタムメニュー項目を追加する方法を示すために少し編集しました。ありがとう!! –

関連する問題