通过隐藏字段将数组传递给rails

我的表格中有一个像这样的hidden_​​tag

 true} %> 

它呈现给

   

目前我正在将business_loc值设置为逗号分隔的字符串,希望rails在提交表单时能够识别。 但这是我在服务器端获得的价值

  "loc"=>["80.22167450000006,13.0454044"] 

代替

  "loc"=>[80.22167450000006,13.0454044] 

如何在隐藏字段中设置正确的值,因此rails可以正确理解它。

您需要使用多个隐藏字段,一个用于值数组的每个元素。

例如:

   

…如果您需要使用JS动态添加这些代码,这里是一个jQuery示例:

 var field = $(''); var form = $('#your-form-id'); form.append(field); 

我发现text_area可以让事情发挥作用,而无需添加一堆隐藏的表格。 只需将文本区域的值设置为类似[1,31,51,61] ,它应该可以正常工作,假设您的模型中有serialize :var

我最近遇到了同样的问题。 我的解决方案是通过简单地用逗号分割数组来在服务器端处理它。 就我而言,它看起来像这样:

  # thing_that_has_many_objects.rb <-- showing custom setter method from the model because my example involves using a virtual attribute # params[object_ids] = ["1,2,3,4,5"] <-- from the form - note the format of array with only one element def objects=(object_ids) split_array = object_ids[0].split(',') split_array.each do |id| self.objects.build(object_id: id) end end