Как поставить флажок _поле _для публикации & #39;false& #39; или & #39;0& #39; параметр, если флажок не установлен?

С помощью следующего флажка _поле _тег:

<%= check_box_tag 'object[boolean_attribute]', 1, object.boolean_attribute %>

я могу обновить логический атрибут _только в одном направлении :с ложного на истинное.

Когда флажок не установлен по умолчанию (, поскольку атрибут object.boolean _имеет значение false ), и я проверяю его, а затем отправляю форму, публикуется :логический атрибут _=> 1 параметр.

Но , когда я пытаюсь изменить значение с true на false, параметр не передается, поэтому логический атрибут _остается истинным.

Другими словами, когда флажок установлен по умолчанию (, поскольку атрибут object.boolean _имеет значение true ), и я снимаю его, а затем отправляю форму, атрибут :логический _=> 0 не опубликован .

Как сделать так, чтобы этот флажок _поле _отображал параметр :логического атрибута _=> 0, если флажок не установлен?

Из API я не могу понять, есть ли какой-то вариант перехода, чтобы легко достичь этого: http://api.rubyonrails.org/classes/ActionView/Helpers/FormTagHelper.html#method-i-check_box_tag

Спасибо.

РЕДАКТИРОВАТЬ

По какой-то причине я не могу понять, в моем фактическом коде (с вложенной ассоциацией many -to -many )скрытое поле _тег _не работает.

<%= hidden_field_tag 'order[preparations_attributes][][cooked]', nil %>
<%= check_box_tag 'order[preparations_attributes][][cooked]', '1', preparation.cooked? %>

Теперь у меня обратная проблема. :Я могу убрать галочку, и подготовка обновится как аспектированная, но если я поставлю галочку, то параметры спутаются.

Вот опубликованные параметры для неотмеченного поля.:

Parameters: {"utf8"=>"✓", "authenticity_token"=>"bGgPGbk+Cuk2q+LEgqetmk4e7xie8dB3iMP9Cj3SUm0=", "order"=>{"customer_name"=>"Duccio Armenise", "duedate"=>"2012-04-25 09:24:00.000000", "preparations_attributes"=>[{"quantity"=>"1", "description"=>"custom recipe", "kind"=>"custom", "cooked"=>"", "recipe_id"=>"9", "id"=>"86", "quantities_attributes"=>[{"ingredient_id"=>"", "qty"=>"", "_destroy"=>"0"}, {"ingredient_id"=>"11", "qty"=>"5.0", "id"=>"193", "_destroy"=>"0"}], "_destroy"=>"0"}], "add_preparation"=>{"recipe_id"=>""}}, "continue"=>"Confirm", "id"=>"31"}

Теперь посмотрите, какой беспорядок, когда я устанавливаю флажок, начиная с "cooked"=>" ", по какой-то причине Rails также закрывает хэш атрибутов подготовки _рано!

Parameters: {"utf8"=>"✓", "authenticity_token"=>"bGgPGbk+Cuk2q+LEgqetmk4e7xie8dB3iMP9Cj3SUm0=", "order"=>{"customer_name"=>"Duccio Armenise", "duedate"=>"2012-04-25 09:24:00.000000", "preparations_attributes"=>[{"quantity"=>"1", "description"=>"custom recipe", "kind"=>"custom", "cooked"=>""}, {"cooked"=>"1", "recipe_id"=>"9", "id"=>"86", "quantities_attributes"=>[{"ingredient_id"=>"", "qty"=>"", "_destroy"=>"0"}, {"ingredient_id"=>"11", "qty"=>"5.0", "id"=>"193", "_destroy"=>"0"}], "_destroy"=>"0"}], "add_preparation"=>{"recipe_id"=>""}}, "continue"=>"Confirm", "id"=>"31"}

РЕДАКТИРОВАТЬ #2:

Я думаю, что столкнулся с ошибкой Rails, связанной с глубоко вложенными формами ресурсов и передачей параметров:https://github.com/rails/rails/issues/5937

На данный момент я заставил его работать с тегом select _:

<%= select_tag 'order[preparations_attributes][][cooked]', options_for_select({yes: 1, no: 0}, preparation.cooked? ? 1 : 0) %> 

Я думаю что переключение на тег select _, чтобы избежать «подсказки скрытого поля _», является приемлемым обходным путем.

В любом случае, спасибо за ответы!

36
задан Darme 26 April 2012 в 11:06
поделиться