javascript-made数组没有作为数组发送到控制器?

时间:2016-03-02 10:21:25

标签: javascript ruby-on-rails arrays ruby

我有一个视图`events / new.html.erb,其中包含:

<%= hidden_field_tag 'id_array[]', [], id: 'parti_ids'  %>

<%= f.submit "Create Meeting", class: "btn-submit" %>

因此,在提交时,id_array []将作为数组发送到我的events_controller#create操作。 我遇到的问题是,例如,如果我想要id_array = [3,4,5],则会在控制器上传递并选择["3,4,5"]而不是["3","4","5"]

以下是我application.js中创建此代码的代码:

var idList = [];

$(document).on('click', "#check-button", function(){

   ....

    $("#check-list li input").each(function(){ //for each listed colleague...
        if( $(this).is(":checked")){ //if check-box is ticked

            idList.push($(this).val()); //add id to idList

        }
    });

    $('#parti_ids').val(idList); //sets idList array to be value of parti_ids hidden_tag_field in view

});

我觉得它与行$('#parti_ids').val(idList);有关,因为这是实际设置parti_ids的唯一地方。但我不知道设置这样的数组值有什么问题,或者为什么它会像[“3,4”]那样而不是[“3”,“4”]。

为了向您展示我在控制器中如何使用它,这里有一个片段:

participants = params[:id_array]
participants.each do |id|
   puts(id) #THIS PUTS THE ENTIRE VALUE OF PARTICIPANTS INSTEAD OF EACH ID
end

1 个答案:

答案 0 :(得分:0)

Remove this line.

<%= hidden_field_tag 'id_array[]', [], id: 'parti_ids'  %>

and add this.

<input type="hidden" name="id_array" id="parti_ids" />

Then split it.

  participants = params[:id_array]
  participants.split(',').each do |id|
    puts(id) #THIS PUTS EACH ID
  end