Rails3の管理画面プラグインActiveAdmin

管理画面プラグインのactive_adminについて軽く調べたのでそのまとめ

ドキュメントが整備されているのでドキュメントを見れば大体やりたいことはできそうな気がしました。
大体調べているのはカスタマイズ性です。Modelをベースとした管理は他の候補のプラグインでもできるので
いかに何かやろうとした時にすごいめんどくさいことにならないかがポイントです。

Modelの管理の部分のカスタマイズはASCIIcastsに乗っていたのでここをみればよさそう

インストール

active_adminは管理者管理にdeviseを使っているのですが今回はdeviseはインストール済みだったのでそのへんはあまりみていない。


Gemfileに下記記述をしてbundle install

gem 'activeadmin'

active_adminのファイルを生成

$ rails g active_admin:install

http://localhost:3000/admin
上記で管理画面にアクセスできるようになる。
認証情報は初期状態だと下記

  • User: admin@example.com
  • Password: password

active_adminは初期状態だとなにも管理していないので管理するmodelを追加するために下記コマンドを叩く

$ rails g active_admin:resource model_name

追加するとapp/admin/model_name.rbというファイルが生成される。
routesなども設定されてる

カスタマイズ

表示項目のカスタマイズ

一覧ページは初期状態だと全カラムの情報が表示されているが必要なものだけを表示
ユーザーのところではidとemailだけ表示する
app/admin/user.rb

ActiveAdmin.register User do
  index do
    column :id
    column :email
  end
end

列の名前を変更。第一引数に設定

column "hoge", :email

ちなみにhelperメソッドが使えるので表示する値の表示形式変えたかったらhelperを使う

column "hoge", do |user|
  helper_method user.name
end
カスタムアクション

usersに新しいアクションを追加する

  • Collection Resourceの場合
    • collection_actionを定義
    • routesは/admin/users/hoge
ActiveAdmin.register User do
  collection_action :hoge do
    # ここに処理
  end
end
  • Single Resourceの場合
    • member_actionを定義
    • routesは/admin/users/:id/hoge
ActiveAdmin.register User do
  member_action :hoge do
    # ここに処理
  end
end

renderされるのは/app/views/admin/users/hoge.html.erbとかです。

カスタムページ

モデルと関係無いページを作るときにつかう?
app/admin/hoge.rb 作る

ActiveAdmin.register_page "Hoge" do
  content do
    # ここに処理をかく!
    # paramsとかもControllerと同じようにとれる
    # ex. params[:hoge]
  end
end

http://localhost:3000/admin/hoge にアクセスできるようになる + ヘッダにメニューがたされる