Rails 3 - как сохранить (снять) флажки? - PullRequest
11 голосов
/ 23 февраля 2012

У меня есть в форме ( 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])

Это работает только вмомент, когда я проверяю некоторые флажки - отправьте их, и они будут сохранены.Все в порядке.Но когда я снимаю галочки со всех флажков - отправляю форму - чтобы ничего не случилось, в таблице БД не будет установлено значение 0 в столбцах ...

Не могли бы вы дать мне какой-нибудь совет, какпочинить это?

Заранее спасибо

1 Ответ

22 голосов
/ 23 февраля 2012

Это происходит из-за того, что не отмеченный флажок не будет отправлять какое-либо значение на сервер.Чтобы обойти это, 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) %>
...