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重にかかってしまう)。