How can I customize the active admin layout?
The active admin layout is not actually defined as a layout file, but is generated programatically. Placing a custom layout in the layout directory will therefore not actually override the default layout.
You can, however, monkey-patch or duck-punch the active admin layout methods inside your application.
The following will add an ie-specific stylesheet to the header:
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 endend
Clearly an ugly solution.
When a view is defined in a gem AND in the rails app, the one defined in the Rails app is served. It's a logic priority.
So if you need to override all or some active admin views, you'll have to copy these in your app and change them as you desire.
Maybe ActiveAdmin does provide a nicer way to do this by now? I don't know.However here would be an example for a bit cleaner patch for that situation, in my example to add the webpacker gems javascript_pack_tag to my admin area.
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 endendclass ActiveAdmin::Views::Pages::Base < Arbre::HTML::Document prepend MyApp::ActiveAdmin::Views::Pages::BaseExtensionend