2011-09-17 17 views

Respuesta

10

Cuando se define una vista en una gema Y en la aplicación Rails, se sirve la definida en la aplicación Rails. Es una prioridad lógica.

Así que si necesita anular todas o algunas vistas de administrador activas, deberá copiarlas en su aplicación y cambiarlas como lo desee.

+1

¿Dónde puedo encontrarlos? ¡Busqué AGES en el git y simplemente no puedo encontrarlo! – Mexxer

+0

Lo mismo aquí @Mexxer; He estado pasando bastante tiempo buscando la forma de anularlo correctamente. – jackyalcine

+0

Consulte aquí: https://github.com/gregbell/active_admin/tree/master/app/views – apneadiving

26

El diseño de administrador activo no está realmente definido como un archivo de diseño, sino que se genera programáticamente. Por lo tanto, colocar un diseño personalizado en el directorio de diseño no anulará el diseño predeterminado.

Sin embargo, puede aplicar el parche de mono o el pato a los métodos activos de administración de diseño dentro de su aplicación.

A continuación se añade una hoja de estilo, es decir específica a la cabecera:

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 

claramente una solución feo.

+2

¿Dónde colocaría esto? – jackyalcine

+0

@jalcine agrego esto a un inicializador –

+0

Así sería la adición: 'módulo ActiveAdmin módulo Vistas Páginas módulo de Presentación: aplicación finales final final ' Y estaría bien? – jackyalcine

1

¿Tal vez ActiveAdmin proporciona una manera más agradable de hacer esto ahora? No lo sé. Sin embargo, aquí podría ser un ejemplo de parche un poco más limpio para esa situación, en mi ejemplo para agregar las gemas del webpacker javascript_pack_tag a mi área de administración.

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 
+0

Esta es la mejor respuesta de OMI. Sin embargo, podemos usar una forma menos detallada de anteponer el módulo: https://gist.github.com/francois-ferrandis/1dc749262e7376e62074f908ee70356b –

Cuestiones relacionadas