ネスとしたパラメータ

text_field 'user', 'name'

とビューに書くと

<input type="text" name="user[name]" ・・・/>

というようなHMTLが吐かれて、リクエストとしては

Parameters: {"user"=>{"name"=>"藤崎マーケット"}, "action"=>"save", "controller"=>"user"}

という風に解釈される。で、パラメータとして受け付けられるのはせいぜい1階層のハッシュだろうと勝手に思い込んでいましたが、某MさんがStrutsならこういう書き方ができますよ、と言うんで試してみたら本当に出来た。

<input type="text" name="user[0][name]" ・・・/>

と書くと

Parameters: {"user"=>{"0"=>"{"name"=>"藤崎マーケット"}}, "action"=>"save", "controller"=>"user"}

ありがとうMさん。
これの何が嬉しいかというと、ヘッダーと明細のようなデータ構造を一気にドンとPOSTできて、結構簡単にオブジェクトとして復元できるということなんですが、Railsならlink_to_remoteとかsubmit_to_remoteで簡単にAjaxな明細の追加/削除/更新ができちゃう今、使い道は少ないかも。でも知ってると役立ちそう。

ちなみに階層は幾つでもいけそう。

$ ruby script/console
Loading development environment.
>> app.get "/user/save?p1[p2][p3][p4]=aaaa"
=> 200

と実行したら

Processing UserController#save (for 127.0.0.1 at 2007-03-20 10:07:35) [GET]
070320 10:07:35 INFO:   Session ID: 13d3691b6f71aff58246f9b84661ef21
070320 10:07:35 INFO:   Parameters: {"p1"=>{"p2"=>{"p3"=>{"p4"=>"aaaa\n"}}}, "action"=>"save", "controller"=>"user"}

という感じでログが出ました。すごーい。便利ー!