I need to customize the active admin layout, but how can I do it?
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 end end
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.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With