12

私はフォーム(form_tag)に次のようないくつかのチェックボックスを持っています:

<%=check_box_tag 'model_name[column_name]', 1, (@data.model_name.column_name == 1 ? true : false)%>

そして、それらを次のように更新します:

variable = ModelName.find(params[:id])             
variable.update_attributes(params[:model_name])

これは、いくつかのチェックボックスをオンにした瞬間にのみ機能します-それらを送信すると、保存されます。それはいいです。しかし、すべてのチェックボックスをオフにすると - フォームを送信 - 何も起こらず、DB テーブルでは列に値0が設定されません...

直し方、コツを教えてください。

前もって感謝します

4

1 に答える 1

23

これは、チェックボックスをオフにするとサーバーに値が送信されないために発生します。これを回避するために、Rails は次のcheck_boxようなコードを生成するヘルパーを提供します。

<input type="hidden"   name="model[attr]" value="0" />
<input type="checkbox" name="model[attr]" value="1" />

または、隠しフィールドを次のように挿入しますhidden_field_tag

<%= hidden_field_tag 'model_name[column_name]', '0' %>
<%= check_box_tag 'model_name[column_name]', 1, (@data.model_name.column_name == 1 ? true : false) %>
于 2012-02-23T00:10:56.077 に答える