電気羊の執務室

魔法を作る仕事をしています。

active_scaffoldが調子いい

ActiveScaffoldとは

Railsアプリでは、CRUD操作(登録・修正・表示・削除)を 一気に作ってくれる、Scaffoldという機能があります。 が、あまり実用的ではない、という定評で、 便利な機能にもかかわらず、それほど使われていません。

そこでActiveScaffoldです。 ActiveScaffoldでは、ごく少ない操作で、 かなりそれっぽい画面を自動生成してしまいます。

使い方

  1. gemで導入
  2. javascriptテンプレートにrequireを書く
  3. stylesheetテンプレートにrequireを書く
  4. 生成したいエンティティを記述する
  5. 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を書く

stylesheetテンプレートはこれ

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の記述をミスると、白い背景に文字だけの、 シンプルな画面になります。

stylesheetの記述をミスった感じ

javascriptの記述をミスると、リンクをクリックしても動作しなくなります。 ajaxの非同期処理が帰ってこれなくなるのでしょうか。 『新しいウィンドウで開く』などすると、別窓では表示されるようです。

これは?と思った時は、記述を見なおしてくださいね。当たり前か。

Comments