Ruby on rails 通过隐藏字段将数组传递给rails
在我的表格中有一个隐藏的标签Ruby on rails 通过隐藏字段将数组传递给rails,ruby-on-rails,hidden,form-fields,Ruby On Rails,Hidden,Form Fields,在我的表格中有一个隐藏的标签 <%= f.hidden_field :loc , {:multiple => true} %> 反而 "loc"=>[80.22167450000006,13.0454044] 如何在隐藏字段中设置正确的值,以便rails能够正确理解它。您需要使用多个隐藏字段,每个隐藏字段对应于值数组的每个元素 例如: <input id="business_loc" multiple="multiple" name="busi
<%= f.hidden_field :loc , {:multiple => true} %>
反而
"loc"=>[80.22167450000006,13.0454044]
如何在隐藏字段中设置正确的值,以便rails能够正确理解它。您需要使用多个隐藏字段,每个隐藏字段对应于值数组的每个元素 例如:
<input id="business_loc" multiple="multiple" name="business[loc][]" type="hidden" style="color: rgb(175, 175, 175); " value="80.22167450000006">
<input id="business_loc" multiple="multiple" name="business[loc][]" type="hidden" style="color: rgb(175, 175, 175); " value="13.0454044">
…如果您需要代码来使用JS动态添加这些,下面是一个jQuery示例:
var field = $('<input id="business_loc" multiple="multiple" name="business[loc][]" type="hidden" style="color: rgb(175, 175, 175); " value="13.0454044">');
var form = $('#your-form-id');
form.append(field);
var字段=$('');
var form=$(“#您的表单id”);
表单追加(字段);
我发现文本区域可以让事情顺利进行,而不必添加一堆隐藏的表单。只需将文本区域的值设置为类似于[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
#有很多对象的东西。rb设置隐藏字段的样式有什么用?;-)@米沙,不知道,我使用隐藏的字段标记生成了代码:)我想起来了。但是我从客户端填充隐藏的值,这样做比较困难。因为我需要处理很多值,所以您需要动态添加一个新元素。如果现在我需要为每个输入使用不同的ID呢?因为与jQuery添加它们的方式相同,现在我想通过其ID删除它们中的任何一个。如何调用要执行的自定义setter?以便进行拆分。
var field = $('<input id="business_loc" multiple="multiple" name="business[loc][]" type="hidden" style="color: rgb(175, 175, 175); " value="13.0454044">');
var form = $('#your-form-id');
form.append(field);
# 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