スポンサーサイト

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。

Railsで、1対多のmodelを、Ajaxを使ったフォームで保存する方法

1対多の親子関係のモデルをWebから入力する際に、1つのフォーム(nested object formsと呼ぶらしい)で済ませたい場面がある。例えば請求書の入力画面みたいなやつ。
そういう場合はaccepts_nested_attributes_forとfields_forを使えばできるよ~、というサンプルはWeb上にたくさん見つかる。

しかし、ほとんどは子の入力欄の数が固定のものばかり(追加したい分だけ事前にコントローラーで子のモデルをbuildしておく必要がある)で、JavaScriptつかって入力欄を増減させたりするサンプルはなかなか見つからない。あるにはあるけど、トリッキーなコードだったり冗長だったりする。FormBuilderの取り回しやaccepts_nested_attributes_forの受け付けるパラメータの形式などを考慮すると、シンプルに書くのはけっこう難しい。

で、ようやく見つけたのがこれ。
http://railscasts.com/episodes/197-nested-model-form-part-1
http://railscasts.com/episodes/197-nested-model-form-part-2
ただし、Rails 3 の場合、ApplicationHelper#link_to_add_fieldsの最後のlink_to_functionの第2引数のhはとる必要がある(3 からデフォルトでescapeされるので2重にかかってしまう)。

スポンサーサイト
プロフィール

fchiba

Author:fchiba
FC2ブログへようこそ!

最新記事
最新コメント
最新トラックバック
月別アーカイブ
カテゴリ
検索フォーム
RSSリンクの表示
リンク
ブロとも申請フォーム

この人とブロともになる

QRコード
QRコード
上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。