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