Ruby on rails Rails GPS坐标作为表单输入的数组

Ruby on rails Rails GPS坐标作为表单输入的数组,ruby-on-rails,arrays,forms,gps,actioncontroller,Ruby On Rails,Arrays,Forms,Gps,Actioncontroller,我在应用程序中设置了gem,我有一个UI回调,可以让我将GPS坐标设置为输入 function autocompleteMap(){ var completer; completer = new GmapsCompleter({ ... updateUI: function(address, latLng) { $("#myObject_coordinates").val(

我在应用程序中设置了gem,我有一个UI回调,可以让我将GPS坐标设置为输入

function autocompleteMap(){
        var completer;
        completer = new GmapsCompleter({
            ...
            updateUI: function(address, latLng) {
                $("#myObject_coordinates").val(
                  "["+latLng.lat()+", "+latLng.lng()+"]" 
                )
            }
        });
    }
我的mongoid模型接受坐标作为一个数组,用于geocoder gem。是否有切实可行的方法通过输入字段将lat/lng作为阵列传递?有些答案建议使用

f.text_field(:coordinates, multiple: true)
但我不知道应该如何填充该值,因此它被解释为控制器中的数组(并保留lat/Lng顺序)

表单在我的例子中没有帮助,因为我使用javascript来填充单个输入(或者我应该设置它来填充两个输入?)

现在,通过上面的js函数,关联的rails参数变成

params[:my_object][:coordinates] # => ["[x, y]"]
# Wanted: [x, y]
我必须手动将字符串解析为数组,还是有技巧


此外,还需要对该输入进行消毒,并将数字转换为浮点数、任何指导原则、如何“整洁地”处理的说明?

您需要添加两个字段,并且可能希望将它们隐藏起来

看法 JavaScript 控制器
您需要添加两个字段,并且可能希望将它们隐藏起来

看法 JavaScript 控制器
有一个剩余的脚本。更新了我的答案。我很想知道为什么答案被否决了……好吧,不是我。“我现在正在尝试你的解决方案,稍后会报告的。”西里尔·多丽丝,没关系。我只是把它放在下面的选民那里。对不起,我不是指你。我想知道我是否犯了一些错误,但我没有意识到。不用担心。刚刚试过,效果很好,谢谢。HTML中有一个重复的ID,因为有两个隐藏的_字段,但我想这是没有办法的?您可以强制Rails使用您的
ID
s,方法是将它们指定为参数,就像
class
一样。我会更新我的答案。有一个剩余的脚本。更新了我的答案。我很想知道为什么答案被否决了……好吧,不是我。“我现在正在尝试你的解决方案,稍后会报告的。”西里尔·多丽丝,没关系。我只是把它放在下面的选民那里。对不起,我不是指你。我想知道我是否犯了一些错误,但我没有意识到。不用担心。刚刚试过,效果很好,谢谢。HTML中有一个重复的ID,因为有两个隐藏的_字段,但我想这是没有办法的?您可以强制Rails使用您的
ID
s,方法是将它们指定为参数,就像
class
一样。我会更新我的答案。
f.hidden_field(:coordinates, multiple: true, class: 'lat', id: 'lat')
f.hidden_field(:coordinates, multiple: true, class: 'lng', id: 'lng')
// ...
    updateUI: function(address, latLng) {
      $('input.lat').val(latLng.lat());
      $('input.lng').val(latLng.lng());
    }
// ...
# Will receive it as an array
params[:my_object][:coordinates]               # => [x, y]