Active Adminでフィルターの設定、サイドバーを追加する方法をまとめました。
下記記事の方法でインストール、初期設定をしている事を前提としています。
Active Adminのインストール方法
各モデルの一覧情報でデータをフィルターするための設定とビューにサイドバーを追加する設定方法を確認しました。
(1)フィルター
1)フィルターする属性を追加
例えばbookモデルの一覧画面で、名前、著者、ジャンル、価格でフィルターしたい場合は、下記のように設定します。
指定した属性によってActive Adminが自動でフィルターのタイプ(ドロップダウンセレクト、テキスト一致、数値比較など)を選択してくれます。
$ vi app/admin/book.rb
filter :name
filter :author
filter :genre
filter :price
2)フィルタータイプを変更
上記bookモデルのauthorとgenreは外部キーを使って名前を取得し、フィルターのタイプはデフォルトではドロップダウンセレクトです。チェックボックスに変更したい場合は下記のようにします。
filter :author, as: :check_boxes
filter :genre, as: :check_boxes
(2)各著者の表示ビューにサイドバーを追加
sidebarセクションを設定するとActive Admin管理画面のビューにサイドバーを追加できます。
各著者のshowビューにその著者が出版した本のリストを表示するサイドバーを設定する例です。
$ vi app/admin/author.rb
sidebar 'Books by this Author', only: :show do table_for Book.joins(:author).where(author_id: author.id) do |t| t.column("Title") { |book| book.name } end end