Rails 4 ＆ Active Admin で、マスタCRUD系の管理画面を秒速で作る方法


Rails 4 で [Active Admin](http://www.activeadmin.info/) を試してみたので、導入手順をメモしておきます。
タイトルどおり、Rails でそれなりの管理画面が簡単に作成できます。

> 公式のデモ⇒http://demo.activeadmin.info/admin

# 今回の環境

- ローカルの Mac に 構築した Rails 環境に導入しています。
	- OS： `Mac OS X 10.9.4 (Mavericks)`
	- Ruby： `2.1.2`
	- Rails： `4.1.1`

# 導入手順

- Active Admin の [GitHubページ](https://github.com/gregbell/active_admin) に記載されているとおりに、`Gemfile` に追記します。

	```Gemfile
	gem 'activeadmin', github: 'gregbell/active_admin'
	gem 'devise'
	```

	※ devise はログイン認証で必要な模様。

- それらを `bundle install` します。

	```shell
	$ bundle install --path vendor/bundle
	```

	※ 私の場合は、`vendor/bundle` に gem を配置しています。適宜、読み替えてください。

# 使ってみる

Active Adomin の [ドキュメント](http://activeadmin.info/documentation.html) を参考に進めます。

- 下記コマンドを実行。

	```shell
	$ ./bin/rails g active_admin:install
	```

	いろいろファイルが追加されました。

	![スクリーンショット 2014-08-10 18.17.57.png](https://qiita-image-store.s3.amazonaws.com/0/35733/564cb7f5-1821-4c3c-e1a3-49a9dea3d88f.png "スクリーンショット 2014-08-10 18.17.57.png")


- 下記コマンドを実行。

	```shell
	$ ./bin/rake db:migrate
	```

	テーブルが生成されたようです。

	![スクリーンショット 2014-08-10 18.20.58.png](https://qiita-image-store.s3.amazonaws.com/0/35733/909802e2-fdeb-663e-aa9c-78ae380359f2.png "スクリーンショット 2014-08-10 18.20.58.png")

	※ RubyMine(IDE) で閲覧しています。

- ローカルWEBサーバを起動。

	```shell
	$ ./bin/rails s
	```

- ブラウザで `http://localhost:3000/admin/` へアクセスしてみます。

	![スクリーンショット 2014-08-10 18.24.23.png](https://qiita-image-store.s3.amazonaws.com/0/35733/999a0d8e-8b38-cb64-8f60-08e91002abeb.png "スクリーンショット 2014-08-10 18.24.23.png")

- ドキュメントに記載されているとおり、次の ID/PASS でログインします。

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

- ログインできました。

	![スクリーンショット 2014-08-10 18.31.37.png](https://qiita-image-store.s3.amazonaws.com/0/35733/14b99e0a-dca4-a823-294f-385960b9e3a1.png "スクリーンショット 2014-08-10 18.31.37.png")

- まだ管理対象のデータ(モデル)が何もないので、モデルを作ってみます。適当に scaffold し、

	```shell
	$ ./bin/rails g scaffold Hoge name:string age:integer
	$ ./bin/rake db:migrate
	```

	※ scaffold でなく、モデルだけ作るのでもいいかも。

- 次のように Active Admin の管理対象にします。

	```shell
	$ ./bin/rails generate active_admin:resource Hoge
	```

- もう一度、`http://localhost:3000/admin/` へアクセスすると、メニューが追加されています。

	![スクリーンショット 2014-08-10 19.08.00.png](https://qiita-image-store.s3.amazonaws.com/0/35733/571a6aca-6f7d-d873-5cda-6d01768fa646.png "スクリーンショット 2014-08-10 19.08.00.png")

- が、このままだと、管理画面からデータ登録した際、次のようにエラーになってしまいます。

	![スクリーンショット 2014-08-10 19.43.09.png](https://qiita-image-store.s3.amazonaws.com/0/35733/7176c6ca-4691-1a3e-64c2-9b9dc642a92b.png "スクリーンショット 2014-08-10 19.43.09.png")

- `app/admin/hoge.rb` で、登録を許可するパラメータを次のように追加すると、エラーは出なくなります。

	```ruby:app/admin/hoge.rb
	ActiveAdmin.register Hoge do
	
	
	  # See permitted parameters documentation:
	  # https://github.com/gregbell/active_admin/blob/master/docs/2-resource-customization.md#setting-up-strong-parameters
	  #
	  # permit_params :list, :of, :attributes, :on, :model
	  #
	  # or
	  #
	  # permit_params do
	  #  permitted = [:permitted, :attributes]
	  #  permitted << :other if resource.something?
	  #  permitted
	  # end
	
	  permit_params :name, :age
	
	end

- データ登録できました！

	![スクリーンショット 2014-08-10 19.48.39.png](https://qiita-image-store.s3.amazonaws.com/0/35733/2d6f1432-5334-0f89-c741-cd01a2c72209.png "スクリーンショット 2014-08-10 19.48.39.png")

# おわりに

- 結構、ドキュメントも充実しているので、カスタマイズも柔軟にできそうです^^
	- ドキュメント：http://activeadmin.info/documentation.html