ActiveScaffoldとは
Railsアプリでは、CRUD操作(登録・修正・表示・削除)を 一気に作ってくれる、Scaffoldという機能があります。 が、あまり実用的ではない、という定評で、 便利な機能にもかかわらず、それほど使われていません。
そこでActiveScaffoldです。 ActiveScaffoldでは、ごく少ない操作で、 かなりそれっぽい画面を自動生成してしまいます。
使い方
- gemで導入
- javascriptテンプレートにrequireを書く
- stylesheetテンプレートにrequireを書く
- 生成したいエンティティを記述する
- routesファイルにひとこと書く
1.gemで導入
Gemfileに、以下の通り記述します。
gem install active_scaffold
関係ないですが、僕は最近、もっぱらskip_bundleオプション付きでプロジェクトを作り、
後からプロジェクト内のvendor/bundle配下にgemをインストールするのが、
全体の環境を壊さなくていいなぁとお気に入りです。
2. javascriptテンプレートにrequireを書く
app/assets/javascripts/application.js を開きます。 ファイルの末尾に、requireを記述したブロックがあるので、 以下の通り追記します。
//= require active_scaffold
コメントアウトした感じの見た目で構いません。
3. stylesheetテンプレートにrequireを書く
app/assets/stylesheets/application.css を開きます。 ファイルの末尾に、requireを記述したブロックがあるので、 以下の通り追記します。
*= require active_scaffold
これも、コメントアウトした感じの見た目で構いません。
4.生成したいエンティティを記述する
エンティティを、ActiveScaffoldを使って、 モデルとコントローラとビューを一気に生成します。 例えば、以下のように記述します。
rails g active_scaffold work_kind name:string
5.routesファイルにひとこと書く
最後に、config/routesファイルに、以下のように書きます。
resources :work_kinds do as_routes end
これで、Railsアプリ上では、このように表示されるはずです。
間違えるとどうなるか?
ちなみに、requireの記述を間違えると、
それぞれ特有の動作をします。
stylesheetの記述をミスると、白い背景に文字だけの、 シンプルな画面になります。
javascriptの記述をミスると、リンクをクリックしても動作しなくなります。 ajaxの非同期処理が帰ってこれなくなるのでしょうか。 『新しいウィンドウで開く』などすると、別窓では表示されるようです。
これは?と思った時は、記述を見なおしてくださいね。当たり前か。