risposta accettato di BigFive lavorato per me all'inizio, ma poi ha prodotto alcuni bug nel rendering parziali personalizzati o quando errori di rendering in forme .
Ispirato dal suo approccio, sono passato a ignorare i singoli metodi utilizzati da AA per generare dinamicamente il layout (poiché AA non utilizza un file di layout statico che può essere facilmente modificato).
È possibile trovare i metodi disponibili nel codice sorgente, ma è piuttosto auto-esplicativo e inizia nello html element.
Esempio:
Per aggiungere alcune classi e riorganizzare gli elementi:
Si può mettere il tuo stile in:
beni/fogli di stile/active_admin.css.scss
E il vostro html descrizione in:
config/initializers/active_admin_patch.rb:
module ActiveAdmin
module Views
class Header
alias_method :original_build_site_title, :build_site_title
alias_method :original_build_global_navigation, :build_global_navigation
alias_method :original_build_utility_navigation, :build_utility_navigation
def build_site_title
div class: "side_bar_top" do
original_build_site_title
end
end
def build_global_navigation
div class: "side_bar_content" do
original_build_global_navigation
end
end
def build_utility_navigation
div class: "side_bar_footer" do
original_build_utility_navigation
end
end
end
module Pages
class Base
alias_method :original_build, :build
# This should be the same as add_classes_to_body but for the html main element
def add_classes_to_html_tag
document.add_class(params[:action])
document.add_class(params[:controller].gsub('/', '_'))
document.add_class("active_admin")
document.add_class("logged_in")
document.add_class(active_admin_namespace.name.to_s + "_namespace")
end
def build(*args)
original_build
add_classes_to_html_tag
end
def build_page
within @body do
div id: "wrapper" do
div id: "details_view" do
build_title_bar
build_page_content
#build_footer
end
div id: "master_view" do
build_header
end
end
end
end
end
end
end
end
Non sono sicuro di come funzioni la patch, puoi dare un'idea più chiara su come usarla? Finora, @import "bootstrap"; in active_admin.css.scss ha l'aspetto bootstrap. Potresti dare qualche linea guida didattica? Grazie. – Axil
La patch cambia il modo in cui ActiveAdmin funziona superando questo metodo per restituire la stringa 'active_admin_reskin'. Salvalo nel percorso indicato nel commento sulla prima riga. Quindi si crea un layout simile (solo un layout regolare di Rails) in app/views/layouts/active_admin_reskin.html.erb Vedere l'elenco a cui @BigFive è collegato. – nocache
Ho avuto problemi nell'implementarlo con la gemma meno bootstrap. Ha funzionato bene quando è stato spostato nella gemma SASS e aggiunto: @ import "bootstrap-sprockets"; @ import "bootstrap"; in active_admin.css.scss – Seoman