Rails1.2.3 選択されていないチェックボックス(checkbox)をパラメータとして送信する方法

チェックボックスが非選択の場合、Webブラウザは当該フィールドをparameterとして送信しません。以下はapiからの抜粋ですが、Ruby on Railsのcheck_boxヘルパでは


check_box("post", "validated")
<input type="checkbox" id="post_validate" name="post[validated]" value="1" checked="checked" />
<input name="post[validated]" type="hidden" value="0" />
というように、値がfalseのhiddenフィールドを同時に作成して、同名のパラメータが必ずサーバ側に送られるようにしています。値はRails側で自動的に判断してくれるので、開発者側は何も考える必要がなく大変便利です。
ActiveRecordオブジェクトに関連づけられたfieldについては上記check_boxヘルパを使うだけでよいのですが、普通のチェックボックスを使って同じことをしたい場合には

<%= check_box_tag "validated", 1, params[:validated] == 1 %><%= hidden_field_tag "validated", 0 %>
というように、自分でチェックボックスと同じ名前のhiddenフィールドを作ってあげると同様の動作をさせることができます。