Devo personalizzare il layout di amministrazione attivo, ma come posso farlo?Come posso personalizzare il layout di amministrazione attivo?
risposta
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.
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.
Dove lo inseriresti? – jackyalcine
@jalcine aggiungo questo per un inizializzatore –
Quindi sarebbe aggiungendo: 'modulo ActiveAdmin modulo Viste modulo Pagine di layout: applicazione finali fine fine ' E sarei bene? – jackyalcine
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
Questa è la migliore risposta IMO. Tuttavia, possiamo usare un modo meno dettagliato per anteporre il modulo: https://gist.github.com/francois-ferrandis/1dc749262e7376e62074f908ee70356b –
Dove posso trovarli? Ho cercato in git per AGES e proprio non riesco a trovarlo! – Mexxer
Lo stesso qui @Mexxer; Ho trascorso un po 'di tempo per un modo per ignorare correttamente questo. – jackyalcine
Vedi qui: https://github.com/gregbell/active_admin/tree/master/app/views – apneadiving