2016-07-21 1 views
0

Я подаю форму, это та часть в вопросепараметры Форма поля получить перепутано

<% item.question_options.sort.each do |opt| %> 
    <%= radio_button_tag('responder[selected_options][' + item.id.to_s + '][][option_id]', opt.id.to_s, @responder.answered_to?(opt, item))%> 
    <%= text_field_tag('responder[selected_options][' + item.id.to_s + '][][content]', @responder.get_response_for_option(item, opt, lang.id)%> 
<% end %> 

Эти сгенерированные метки. Есть два вопроса, каждый из которых является переключателем с дополнительным текстовым полем.

<input id="responder_selected_options_183__option_id_137" type="radio" value="137" name="0701b[selected_options][183][][option_id]"> 
<input id="responder_selected_options_183__content" type="text" name="0701b[selected_options][183][][content]"> 

<input id="responder_selected_options_183__option_id_138" type="radio" value="138" name="0701b[selected_options][183][][option_id]"> 
<input id="responder_selected_options_183__content" type="text" name="0701b[selected_options][183][][content]"> 

Если первый переключатель выбран, и содержание дано соответствующее поле, он создает параметры, как ожидалось:

"183"=>[{"option_id"=>"137", "content"=>"smth"}, {"content"=>""}] 

Однако, если содержание дано первое поле и второе радио кнопка выбрана, параметры, как это:

"183"=>[{"content"=>"smth", "option_id"=>"138"}, {"content"=>""}] 

..while Я бы ожидать, что они будут так:

"183"=>[{"content"=>"smth"}, {"option_id"=>"138", "content"=>""}] 

Почему это происходит и как я могу это исправить?

Спасибо!

ответ

0

Я не мог решить проблему так, как хотел. Я закончил создание нового массива для переменных content и обрабатывал вещи по-разному в моделях.

<%= radio_button_tag('responder[selected_options][' + item.id.to_s + '][]', opt.id.to_s, @responder.answered_to?(opt, item), :disabled => @responder.finished?)%> 
<%= text_field_tag('responder[options_content][' + item.id.to_s + ']['+opt.id.to_s+']', @responder.get_response_for_option(item, opt, lang.id), :disabled => @responder.finished?, :class => "form-control")%> 

это возвращает хорошие массивы со всем необходимым, без беспорядка.

"selected_options"=>{"183"=>["137"]}, 
"options_content"=>{"183"=>{"137"=>"", "138"=>"smth"}}}} 
Смежные вопросы