通过隐藏字段将数组传递给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