accepts_nested_attributes_for
Windows7にRails2.3.4をインストールしましたので、
Rails2.3から導入されたaccepts_nested_attributes_forを使ってみました。
親子関係のあるレコードを同時に更新することができる便利な機能です。
いつもどおり新しいプロジェクトの上で行います。
1.プロジェクトの生成
NetBeansでメニューバーの[ファイル(F)]から[新規プロジェクト(W)]を選択します。
[ステップ1]プロジェクトを選択
カテゴリ(C): Ruby
プロジェクト(P): Ruby on Rails アプリケーション
[ステップ2]名前と場所
プロジェクト名(N): Appli002
プロジェクトの場所(l): D:\Rails_Project
プロジェクトフォルダ(D): D:\Rails_Project\Appli002
Rubyプラットフォーム(P): Ruby 1.8.7-p72
サーバー(S): WEBrick
[ステップ3]データベース構成
データベースアダプタ(P): mysql
データベース名(D): Appli002_development
ユーザー名(M): ******
パスワード(W): ******
[ステップ4]Railsのインストール
Railsのバージョン: 2.3.4
2.日本語環境の設定
/config/environment.rbと/app/controllers/application_controller.rbの一部を修正します。
Rails2.3からapplication.rbはapplication-controller.rbに名称が変更になりました。
3.データベースの作成
NetBeansで[Rake タスクを実行]を選択し、タスク一覧から[db:create]を実行します。
4.Scaffoldの実行
NetBeansでProjectとMemberで構成されるモデルをScaffoldで作成します。
(1) Projectの生成
ジェネレータ(G):scaffold
モデル(m):Project
属性ペア(A): p_name:string
(2) Memberの生成
ジェネレータ(G):scaffold
モデル(m):Member
属性ペア(A): m_name:string project_id:integer
5.マイグレーションの実行
NetBeansで[データベースマイグレーション]を選択し[現在のバージョンへ]を実行します。
6.動作確認
(1) 開発用WebサーバWEBrickの起動
NetBeansで[実行]を選択し実行します。
(2) ブラウザからプログラムを実行
URL http://127.0.0.1:3000/projects/を入力する。
URL http://127.0.0.1:3000/members/も試してみましょう。
7.モデルのリレーションの設定
いよいよaccepts_nested_attributes_forを使う場面がきました。
ProjectとMemberは1:nの関係であるとします。
(1) モデルProjectの修正
/app/models/project.rb |
|
(2) モデルMemberの修正
/app/models/member.rb |
|
8.コントローラの修正
/app/controllers/projects_controller.rb |
|
9.projectフォームの変更
(1)index
/app/views/projects/index.html.erb |
|
(2)new
/app/views/projects/new.html.erb |
|
(3)show
/app/views/projects/show.html.erb |
|
(4)edit
/app/views/projects/edit.html.erb |
|
10.動作確認
(1) WEBrickの再起動
(2) ブラウザからプログラムを実行
http://127.0.0.1/projects/
11.amatsuda-i18nのインストール(Railsの環境で一度やればよい)
ここまで来たのですから日本語化してみましょう。
コマンド プロンプト |
|
12.日本語化
(1) i18nによる生成
コマンド プロンプト |
|
(2) ja.ymlの内容確認
/config/locales/ja.ymlを覗いてみてください。
いろいろなものが日本語に変換されることが解ります。
前のバージョンより変換項目が増えていますね。
/config/locales/ja.yml |
|
(3) translation_ja.ymlの内容確認
/config/locales/translation_ja.yml |
|
13.ビューの修正
(1) translation_ja.ymlの追加修正
/config/locales/translation_ja.yml |
|
(2)ビューindexの修正
/app/views/projects/index.html.erb |
|
(3)ビューnewの修正
/app/views/projects/new.html.erb |
|
(4)ビューshowの修正
/app/views/projects/show.html.erb |
|
(5)ビューeditの修正
/app/views/projects/edit.html.erb |
|
14.動作確認
(1) WEBrickの再起動
(2) ブラウザからプログラムを実行
http://127.0.0.1/projects/