2014-12-12 4 views
0

У меня есть гнездящийся видRails check_box внутри fields_for

- f.object.buttons.build if f.object.buttons.blank? 
- f.object.buttons.each do |button| 
    = f.fields_for :buttons, button, index: nil do |button| 
    .control-group 
     = button.label :url, 'Url' 
     = button.text_field :url, {type: 'url'} 

    .control-group 
     = button.label :active, 'Active' 
     = button.check_box :active 

    # ... 

Когда я проверяю check_box и сохранить эту форму, что-то странное случилось: в Params хэш я могу видеть, что вместо одной кнопки с проверяются параметры «активны 'форма посылает две кнопки:

..., "buttons"=>[{"label"=>"site", "url"=>"http://example.com", "active"=>"0"}, {"active"=>"1"}]} 
+0

у вас есть два элемента для кнопки, определенной в вашем представлении. 'text_field' с именем' url' и 'check_box' с именем' active'. Почему вы ожидаете только одного? – usha

+0

@ Vimsha, я не ожидаю одного параметра. Я ожидаю, что если флажок «active» установлен для конкретной кнопки, тогда этот параметр должен быть помещен внутри вложенных параметров следующим образом: '' buttons "=> [{" label "=>" site "," url "=>" http://example.com "," active "=>" 1 "}]}', а не так: '" buttons "=> [{" label "=>" site "," url "=>" http : //example.com "," active "=>" 0 "}, {" active "=>" 1 "}]}'. И я не понимаю, почему это происходит. – MikeAndr

ответ

1

у вас есть две переменные с именами button в вашем fields_for объеме

+0

Ах, спасибо! Это была глупая ошибка! – MikeAndr