2016-03-02 40 views
0

我有一个观点`事件/ new.html.erb其中包含:JavaScript的制阵列不被发送到控制器作为数组?

<%= 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 
+0

为什么不使用复选框表单助手,将multiple选项设置为true而不是创建数组客户端? – Rubysmith

+0

@Rubysmith我不知道我明白你的意思? –

+0

[发送数组参数](http://apidock.com/rails/ActionView/Helpers/FormHelper/check_box#1001-Sending-array-parameters) – Rubysmith

回答

0

删除此行。

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

并加入此项。

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

然后拆分它。

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

这样做导致id_array被作为字符串“3,4,5”而不是数组传递给控制器​​,因此它不会让我去做参与者。每个 –

+0

好的,这对我所做的事没有任何影响之前找到我的控制器。它仍然接收的[“3,4,5”]代替[“3”,“4”,“5”] –

+1

以上回答是现在最简单的解决方法。 – Rubysmith