【发布时间】:2016-06-15 03:17:44
【问题描述】:
我有一个视图`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"]。
为了向你展示我是如何在我的控制器中使用它的,这里有一个 sn-p:
participants = params[:id_array]
participants.each do |id|
puts(id) #THIS PUTS THE ENTIRE VALUE OF PARTICIPANTS INSTEAD OF EACH ID
end
【问题讨论】:
-
为什么不使用将多个选项设置为 true 的复选框表单助手,而不是创建数组客户端?
-
@Rubysmith 我不确定我明白你的意思吗?
-
@Rubysmith 因为数组仍有机会在其他地方更改,所以我希望它在计算完成后提交。您能否建议我如何重新编写设置#parti_ids 值的行?
-
问题不在于 JavaScript,而在于 hidden_field_tag 以及 Rails 如何处理参数。我想您可能必须为每个复选框生成一个隐藏字段。
标签: javascript ruby-on-rails arrays ruby