Step by Step Ruby on Rails

Ruby on Railsで実際にWebサイトを構築する手順をまとめています。

Active Adminでフィルターの設定、サイドバー追加

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