Bootstrap テンプレート テーマを使用して ActiveAdmin のスキンを変更したいと考えています。ただし、ページのレイアウトを適切に変更する必要があります。
必要に応じて ActiveAdmin のレイアウトをオーバーライドすることはできますか? 通常の Rails の規則とは見た目が異なります。通常のテンプレートを使用してそれを実現し、必要な順序でコンテンツの必要な部分を生成したいと思います。
Bootstrap テンプレート テーマを使用して ActiveAdmin のスキンを変更したいと考えています。ただし、ページのレイアウトを適切に変更する必要があります。
必要に応じて ActiveAdmin のレイアウトをオーバーライドすることはできますか? 通常の Rails の規則とは見た目が異なります。通常のテンプレートを使用してそれを実現し、必要な順序でコンテンツの必要な部分を生成したいと思います。
私は以前に似たようなことをしました。このGistをチェックしてください https://gist.github.com/bigfive/6017435
:determine_active_admin_layout
基本的に、メソッドをオーバーライドして新しいレイアウトを使用するように、アクティブな管理ベース コントローラーにパッチを適用します。
# config/initializers/active_admin_patch.rb
module ActiveAdmin
class BaseController
def determine_active_admin_layout
'active_admin_reskin'
end
end
end
次に、レイアウトで Arbre のメソッドを次のようactive_admin_reskin
に呼び出すことができますview_factory
view_factory[#{params[:action]}_page"].new(Arbre::Context.new(assigns, self)).send(:build_header)
要旨( https://gist.github.com/bigfive/6017435 )では、これらのメソッドを簡単に呼び出せるように、小さなビュー ヘルパーを作成しました。
アクティブな管理者のソース コードを調べて、さまざまな Arbre ドキュメントで使用できるメソッドを確認してください。特にこちら: https://github.com/gregbell/active_admin/blob/master/lib/active_admin/views/pages/base .rb
マークアップが好きなように変更されたら、ジェネレーターが作成したファイルに@include 'bootstrap'
取り込んで、夢中になることができます。active_admin.css.scss
BigFive の受け入れられた回答は、最初はうまくいきましたが、カスタム パーシャルをレンダリングするとき、またはフォームでエラーをレンダリングするときに、いくつかのバグが発生しました。
彼のアプローチに触発されて、AA がレイアウトを動的に生成するために使用する個々のメソッドをオーバーライドすることに切り替えました (AA は簡単に変更できる静的レイアウト ファイルを使用しないため)。
使用可能なメソッドはソース コードで見つけることができますが、一目瞭然であり、html 要素で始まります。
例:
いくつかのクラスを追加して要素を再編成するには:
スタイルを次の場所に配置できます。
アセット/スタイルシート/active_admin.css.scss
そしてあなたのhtmlの説明:
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
使用している AA のバージョンによって異なります。
(0.6.0 < commit:ec9996406df5c07f4720eabc0120f710ae46c997):
scss を含めますが、css セレクターをbody.active_admin
グループにカプセル化します。さらに、具体性は重要であるため、AA のデフォルトのスタイリングをオーバーライドする場合は、必要な動作を得るために完全なセレクターをオーバーライドしていることを確認する必要がある場合があります。
これらのスタイルを見つけてオーバーライドする場合は、AA のスタイルシートを見て、デフォルトでサイトがどのようにスタイル設定されているかを確認してください。AA スタイルシートをインクルードした後に、カスタム スタイルをインクルードするだけです。
コミット後:ec9996406df5c07f4720eabc0120f710ae46c997
スタイルシートの名前空間は最近削除されましたが、私はその影響をまだ徹底的にテストしていません。