发布带引号的隐藏输入数组

时间:2014-11-13 18:21:46

标签: jquery ruby-on-rails ruby-on-rails-4

此表格有问答。只有一个正确的答案,我有任何问题的单选按钮。我正在使用jQuery来收集所有的单选按钮值,并在提交时将它们分配给隐藏字段。 (如果我不使用jQuery,它将为所有单选按钮元素分配相同的'name',使它们全部在同一组中)

我遇到的问题是当我将单选按钮值分配给他们发布的隐藏字段时这样:

"answer_ids"=>["49,60,62,9,14,18,64,", "2"],

最后一个“2”来自带有复选框的问题,我可以保留这些值,因为这些输入可以具有相同的名称,因为我不关心检查了多少。

第一组数字是我需要的正确格式的值。我尝试了split(',')并且它可以工作,但实际值似乎没有像var答案那样改变为数组。

我需要:

"answer_ids"=>["49", "60", "62", "9", "14", "18", "64", "2"],

如何在正确的位置获得报价?

<%= form_for(@score) do |f| %>
<%= hidden_field_tag :test_id, @test.id %>
<%= hidden_field_tag :user_id, current_user.id %>
<%= hidden_field_tag "answer_ids[]", [] %>
<% @i = 0 %>
<% @a = ("a".."z").to_a %>
<legend><%= @test.name %></legend>
<% @test.question_ids.each do |q| %>
<% @question = Question.find(q) %>
<% @i += 1 %>
<% @answers = @question.answers %>
<% if (@answers.where(correct: true).count == 1) %>
      <label class="col-md-12 control-label" for="radios"><b><%= @i %>.&nbsp;</b><%= @question.content %></label>
      <div class="col-md-11">
        <% @answers.each_with_index do |me, i| %>
          <div class="radio">
            <span style="margin-left: 35px;">
                <%= radio_button_tag @question.id, me.id %> <!-- "answer_ids[]" -->
                <%= @a[i] %>.
                &nbsp;
                <%= me.option %>
            </span>
          </div>
        <% end %>
    </div>
<% else %>
      <label class="col-md-12 control-label" for="checkboxes"><b><%= @i %>.&nbsp;</b><%= @question.content %></label>
      <div class="col-md-11">
        Select all that apply:<br/>
        <% @answers.each_with_index do |me, i| %>
          <div class="checkbox">
            <span style="margin-left: 35px;">
                <%= check_box_tag 'answer_ids[]', me.id %>
                <%= @a[i] %>.
                &nbsp;
                <%= me.option %>
            </span>
          </div>
        <% end %>
    </div>
<% end %>
<% end %>
<div class="actions">
<%= f.submit "Save Test", id: "commit", class: "btn btn-lg btn-primary save" %>
</div>
<% end %>
<script>
$('.new_score').on('submit', function() {
    var input = "";
    $( "form input:radio:checked" ).each(function(i, obj) {
        input += (obj.value) + ","
    });
    var answers = input.split(',');
    $('input[type=hidden][name="answer_ids[]"]').val(answers)
});
</script>

2 个答案:

答案 0 :(得分:0)

是否可以提供在浏览器中生成的html代码,以便我能够正确理解结构。我知道jQuery,但我不知道你的场景和你正在使用的模板引擎

答案 1 :(得分:0)

我决定在提交后添加输入,因此ruby在rails doens上并不知道任何不同。这只是添加了一个复选框隐藏输入,该输入被检查到表单,并选择了每个收音机的值。

$( "form input:radio:checked" ).each(function(i, obj) {
         $('#new_score').append('<input id="answer_ids_'+i+'" name="answer_ids[]" type="hidden" value="'+obj.value+'" checked>');
    });