@Konboi memo

主に技術に関してつらつらと。

はじめてのactive_admin 【カスタマイズ編 その2】

バックナンバー

はじめてのactive_admin 【インストール編】

はじめてのactive_admin 【カスタマイズ編 その1】

Ruby on Rails環境構築ガイド

はじめに

本日は、前回予告していた通り 表示している内容を整理する 方法を紹介したいと思います。

デフォルトの設定のままだと、テーブルに定義したカラムに全てが表示されるようになっています。

しかし、管理画面では リレーションをはるために作成したカラムや、作成した時間など 管理画面上では必要ないものが少なくありません。

必要ないものを表示しておくと見づらくなり、操作する上で不便なので必要ないものは表示しないようにしたいと思います。

表示される内容を整理する

今回はサンプルとして、 id, title, thumbnail, created_at のみを表示しようと思います。

f:id:Konboi:20131202185422p:plain

# app/admin/topic.rb
ActiveAdmin.register Topic do
  index do
    column :id
    column :title
    column :thumbnail 
    column :created_at
end

表示する内容を整理する場合は indexcolumn を使用して表示するデータを定義します。

下記のように index内で定義されたcolumnだけ表示する用になりました。

f:id:Konboi:20131202190903p:plain

注意点として、テーブルのカラム名とindex内で定義しているcolumn名が同じならそのままデータが表示されますが、違う場合は何も表示されません。

画像を表示する

thumbnail画像はリンクのURLではなく、画像をそのまま表示したくなると思います。

その場合は下記のようにすることで、画像を表示することができます。

column :thumbnail do |topic|
  image_tag(topic.thumbnail)
end

画像が表示されました!

f:id:Konboi:20131202185356p:plain

topic には Topicモデルのオブジェクトが入ってきます。

column 名を変える

あまり無いかと思いますが、モデルのカラム名と表示する名前を変えたい場合が出てきた場合は

column :hogehoge do |topic|
  content_tag :p, topic.id

この様な感じで、独自の名前でもナビゲーションを定義することができます。

まとめ

これで、見やすい管理画面を作ることができるのではないでしょうか? 是非、使ってみてください。

次回は、詳細ページを作成し、カスタマイズする を紹介したいと思います。