: yanlıştan true: Sadece bir yönde boolean_attribute güncelleyebilirsiniz İşaretlenmediğinde 'false' veya '0' parametresini göndermek için check_box_tag öğesini nasıl yapabilirim? Aşağıdaki check_box_tag ile
<%= check_box_tag 'object[boolean_attribute]', 1, object.boolean_attribute %>
.
Varsayılan olarak işaretlenmediğinde (object.boolean_attribute false olduğundan) ve bunu kontrol edip formu gönderin, a: boolean_attribute => 1 parametresi gönderilir.
Ancak, true'dan false'ye geçiş yapmaya çalışmadığımda, hiçbir param aktarılmadan boolean_attribute doğru kalır. (Object.boolean_attribute doğrudur çünkü) varsayılan olarak işaretli ve bunu işaretini kaldırın ve sonra formu, bir gönderme zaman başka deyişle
: boolean_attribute => 0 yayınlanmıştır değil olduğunu.
Bu check_box_tag dosyasını nasıl kaydedebilirim: boolean_attribute => işaretlenmediğinde 0 parametresi? http://api.rubyonrails.org/classes/ActionView/Helpers/FormTagHelper.html#method-i-check_box_tag
teşekkür ederiz: Ben çözemiyorum API itibaren
kolayca ulaşmak için geçmesi gereken bazı seçenek varsa.hidden_field_tag çalışmıyor (yuvalanmış birçok çoğa dernek ile) benim gerçek kodda ben anlayamaz nedense için DÜZENLEME
. Ben onay kutusunun işaretini kaldırın ve hazırlık açı olarak güncellenir ama onay kutusunu işaretleyin eğer params haberci yukarıya:
<%= hidden_field_tag 'order[preparations_attributes][][cooked]', nil %>
<%= check_box_tag 'order[preparations_attributes][][cooked]', '1', preparation.cooked? %>
Şimdi tersi bir sorun var.
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"}
Şimdi =>"", nedense Raylar için preparation_attributes kapatıyor ben itibaren, onay kutusunu kontrol ederken "pişmiş" ne dağınıklık bkz: Burada
kontrolsüz kutusu için yayınlanan parametreler şunlardır hash çok erken!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"}
DÜZENLEME 2.:
ben derin iç içe kaynak formları ve param geçişle ilişkili bir Raylar hata koştu düşünüyorum: Bir select_tag çalışmak için ben yaptım Şimdilik https://github.com/rails/rails/issues/5937
:
<%= select_tag 'order[preparations_attributes][][cooked]', options_for_select({yes: 1, no: 0}, preparation.cooked? ? 1 : 0) %>
ben "hidden_field gotcha" önlemek için bir select_tag geçiş yapan bir bir olduğunu düşünüyorum kabul edilebilir geçici çözüm.
Neyse, cevaplar için teşekkürler!
Teşekkür ederim ama bir check_box_tag çözümünün peşindeyim çünkü gerçek kodumda iç içe geçmiş bir kaynağı güncelliyorum. Düzenlemede gerçek koduma bakın. İç içe geçmiş kaynak formuna da uygulanabilir bir çözüm mü? – Darme
Evet, uygun! Hiçbir şey, '' object' yerine '' [preparations_attributes] [] [pişmiş] '' gibi bir şeyden geçmenizi engelleyemez. – jdoe
Şimdilik bir select_tag çözümüne geçiş yaparken bir geçici çözüm yaptım (bkz. EDIT # 2), ancak önerinizi de test edeceğim ... – Darme