我有一个视图`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
答案 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