25

アクティブな管理レイアウトをカスタマイズする必要がありますが、どうすればよいですか?

4

5 に答える 5

31

アクティブな管理レイアウトは、実際にはレイアウト ファイルとして定義されていませんが、プログラムによって生成されます。したがって、レイアウト ディレクトリにカスタム レイアウトを配置しても、実際にはデフォルト レイアウトが上書きされるわけではありません。

ただし、アプリケーション内のアクティブな管理レイアウト メソッドにモンキー パッチまたはダック パンチを適用することはできます。

以下は、ie 固有のスタイルシートをヘッダーに追加します。

module ActiveAdmin
  module Views
    module Pages
      class Base < Arbre::HTML::Document

        alias_method :original_build_active_admin_head, :build_active_admin_head unless method_defined?(:original_build_active_admin_head)

        def build_active_admin_head
          within @head do
            meta :"http-equiv" => "Content-type", :content => "text/html; charset=utf-8"
            insert_tag Arbre::HTML::Title, [title, active_admin_application.site_title].join(" | ")
            active_admin_application.stylesheets.each do |path|
              link :href => stylesheet_path(path), :media => "screen", :rel => "stylesheet", :type => "text/css"
            end
            active_admin_application.javascripts.each do |path|
              script :src => javascript_path(path), :type => "text/javascript"
            end
            text_node csrf_meta_tag
            text_node "<!--[if lt IE 7]>
            <link rel=\"stylesheet\" type=\"text/css\" media=\"all\" href=\"admin_ie7.css\ />
            <![endif] -->".html_safe
          end
        end

      end
    end
  end
end

明らかに醜い解決策です。

于 2012-02-28T00:36:09.373 に答える
11

ビューが gem と Rails アプリで定義されている場合、Rails アプリで定義されたビューが提供されます。論理優先です。

そのため、アクティブな管理ビューのすべてまたは一部をオーバーライドする必要がある場合は、これらをアプリにコピーして、必要に応じて変更する必要があります。

于 2011-09-17T11:50:26.750 に答える