2016-07-21 4 views
0

ich ein Formular vorlege, das ist der Teil in FrageFormularfeldparameter erhalten verkorkste

<% 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 %> 

Dies sind die generierten Tags. Es gibt zwei Fragen, jede ist ein Optionsfeld mit einem optionalen Textfeld.

<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]"> 

Wenn das erste Optionsfeld gewählt, und der Inhalt in dem entsprechenden Feld gegeben, erzeugt es Parameter wie erwartet:

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

Wenn jedoch der Gehalt an das erste Feld gegeben wird und der zweiten Funk Taste gewählt wird, sind die Parameter wie folgt aus:

:

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

..while ich sie so sein erwarten

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

Warum passiert das und wie könnte ich das beheben?

Danke!

Antwort

0

Ich konnte das Problem nicht lösen, wie ich es wollte. Ich habe am Ende ein neues Array für content Variablen erstellt und Dinge anders in Modellen behandeln.

<%= 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")%> 

das gibt wieder schöne Arrays mit allem, was ich brauche, ohne ein Durcheinander.

"selected_options"=>{"183"=>["137"]}, 
"options_content"=>{"183"=>{"137"=>"", "138"=>"smth"}}}}