表单字段参数搞砸了

时间:2016-07-21 13:27:57

标签: ruby-on-rails forms

我正在提交表格,这是有问题的部分

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

但是,如果将内容提供给第一个字段并选择了第二个单选按钮,则参数如下:

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

..虽然我希望它们是这样的:

background-repeat: no-repeat;

为什么会发生这种情况,我该如何解决这个问题?

谢谢!

1 个答案:

答案 0 :(得分: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"}}}}