2013-06-12 2 views
2

у меня есть это часть моего form_tagCheckbox не останется проверяется в рельсах форме

%input{ :type => "checkbox", :name => "form", :value => "#{@t.form}"} 

Это экономит в базу данных как 1, когда я проверить его в первый раз, а потом, если я вернуться обратно к той форме, не отображается.

+0

Вы используете simple_form? –

+0

нет, я использую form_tag – user1738017

+0

Проверьте обновленный ответ. –

ответ

1

Во-первых, это не рекомендуемый способ добавления формы и полей в рельсы. Но, все-таки ответить вам вопрос, вы можете пойти с этим:

%input{ :type => "checkbox", :name => "form", :value => true, :checked => @t.form ? "checked" : ""} 

Обратите внимание, что я изменил значение части к true, как это атрибут значение флажка, который всегда будет иметь то же значение.

Теперь возникла бы другая проблема, если флажок был ранее установлен, и теперь вы снимаете флажок и сохраняете форму, тогда она не сохранит значение «0» из false в базе данных.

В соответствии со спецификацией HTML непроверенные флажки не представляют значения. Однако часто бывает удобно, чтобы флажок всегда отправлял значение.

Теперь, чтобы избежать этой проблемы, вам необходимо также добавить скрытое поле.

%input{ :type => "hidden", :name => "form", :value => false} 
%input{ :type => "checkbox", :name => "form", :value => true, :checked => @t.form ? "checked" : ""} 

Теперь, если флажок снят только скрытый вход подается, и если он будет установлен, то оба варианта, но значение, представленное флажком имеет преимущество.

Примечание: Я порекомендую вам использовать методы рельсов для создания скрытых полей и флажка.

Update (с form_tag хелперов)

= hidden_field_tag('form', '0') 
= check_box_tag("form", '1', @t.form) 

Я думаю, что вы используете HAML и форма представляет собой логическое поле в базе данных.

+0

это всегда сохраняет базу данных как «null» – user1738017

+0

Можете ли вы опубликовать вывод html для обоих полей. –

+0

теперь он ничего не сохраняет в базе данных, и поле всегда проверяется. – user1738017