2011-09-17 17 views

risposta

10

Quando una vista è definita in una gemma E nell'app per rotaie, viene pubblicata quella definita nell'app Rails. È una priorità logica.

Quindi, se hai bisogno di ignorare tutte o alcune delle viste di amministrazione attive, dovrai copiarle nella tua app e cambiarle come desideri.

+1

Dove posso trovarli? Ho cercato in git per AGES e proprio non riesco a trovarlo! – Mexxer

+0

Lo stesso qui @Mexxer; Ho trascorso un po 'di tempo per un modo per ignorare correttamente questo. – jackyalcine

+0

Vedi qui: https://github.com/gregbell/active_admin/tree/master/app/views – apneadiving

26

Il layout di amministrazione attivo non è effettivamente definito come un file di layout, ma viene generato in modo programmatico. Pertanto, l'inserimento di un layout personalizzato nella directory di layout non sostituirà il layout predefinito.

È possibile, tuttavia, eseguire il patch di scimmia o anatra-punch i metodi di layout di amministrazione attivi all'interno dell'applicazione.

Di seguito si aggiunge un foglio di stile specifico, cioè all'intestazione:

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 

Chiaramente una soluzione brutto.

+2

Dove lo inseriresti? – jackyalcine

+0

@jalcine aggiungo questo per un inizializzatore –

+0

Quindi sarebbe aggiungendo: 'modulo ActiveAdmin modulo Viste modulo Pagine di layout: applicazione finali fine fine ' E sarei bene? – jackyalcine

1

Forse ActiveAdmin fornisce un modo migliore per farlo ora? Non lo so. Comunque qui sarebbe un esempio per una patch un po 'più pulita per quella situazione, nel mio esempio per aggiungere le gemme webpacker javascript_pack_tag alla mia area di amministrazione.

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

Questa è la migliore risposta IMO. Tuttavia, possiamo usare un modo meno dettagliato per anteporre il modulo: https://gist.github.com/francois-ferrandis/1dc749262e7376e62074f908ee70356b –

Problemi correlati