Как я могу настроить активный макет администратора? - PullRequest
21 голосов
/ 17 сентября 2011

Мне нужно настроить макет активного администратора, но как я могу это сделать?

Ответы [ 3 ]

28 голосов
/ 28 февраля 2012

Активный макет администратора фактически не определяется как файл макета, но генерируется программно. Поэтому размещение пользовательского макета в каталоге макетов фактически не переопределит макет по умолчанию.

Вы можете, однако, обезьяна-патч или утка-удар активные методы макета администратора в вашем приложении.

Следующее добавит в заголовок специфичную для 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

Очевидно, уродливое решение.

11 голосов
/ 17 сентября 2011

Когда представление определено в геме и в приложении rails, то оно отображается в приложении Rails.Это логический приоритет.

Поэтому, если вам нужно переопределить все или некоторые активные представления администратора, вам придется скопировать их в свое приложение и изменить их по своему усмотрению.

4 голосов
/ 26 октября 2017

Может быть, ActiveAdmin предоставляет лучший способ сделать это сейчас?Я не знаю.Однако здесь был бы пример немного более чистого патча для этой ситуации, в моем примере для добавления гемов веб-упаковщика javascript_pack_tag в мою область администратора.

module MyApp
  module ActiveAdmin
    module Views
      module Pages
        module BaseExtension
          def build_active_admin_head
            super
            within @head do
              text_node(javascript_pack_tag('application'))
            end
          end
        end
      end
    end
  end
end

class ActiveAdmin::Views::Pages::Base < Arbre::HTML::Document
  prepend MyApp::ActiveAdmin::Views::Pages::BaseExtension
end
...