1

私はActiveAdminの初心者であり、状況が発生したときに大きくて大胆な警告を表示しようとしています。

ドキュメントを読んだ後、これを行う方法がわかりません。

私が何とかした最善のことは、いくつかの条件に基づいて、ページを選択的に登録するか、登録しないことでした。その目的は、メニュー要素を選択的に追加することでした。これは開発では機能しましたが、すべてのリクエストでコードがリロードされない本番環境では失敗します。

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

つまり、質問は...どこかでブロックを宣言することは可能ですか?それはすべてのリクエスト、すべてのページで実行され、メニューに要素を追加するか、何らかの方法でヘッダーを変更する機能がありますセクション?

どうもありがとうございます!
ダニエル

4

1 に答える 1

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

名前で削除できます。

于 2012-05-10T22:26:41.757 に答える