Rails GPS 坐标作为来自表单输入的数组

Rails GPS coordinates as an array from a form input

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

function autocompleteMap(){
        var completer;
        completer = new GmapsCompleter({
            ...
            updateUI: function(address, latLng) {
                $("#myObject_coordinates").val(
                  "["+latLng.lat()+", "+latLng.lng()+"]" 
                )
            }
        });
    }

我的 mongoid 模型接受坐标作为与地理编码器一起使用的数组 gem。有没有一种实用的方法可以通过输入字段将 lat/lng 作为数组传递?建议使用一些 SO 答案

f.text_field(:coordinates, multiple: true)

但我不知道应该如何填充该值,因此它在控制器中被解释为一个数组(并保留 lat/Lng 顺序)

Get an array from a rails 表单对我的情况没有帮助,因为我使用 javascript 来填充单个输入(或者我应该将其设置为填充两个输入?)

现在有了上面的js函数,关联的rails参数就变成了

params[:my_object][:coordinates] # => ["[x, y]"]
# Wanted: [x, y]

我是否必须手动将字符串解析为数组,还是有技巧?

另外,这个输入需要清理,数字转换为浮点数,任何指南,关于如何做到这一点的提示"neatly"?

您需要添加 2 个字段,您可能希望将它们隐藏。

查看

f.hidden_field(:coordinates, multiple: true, class: 'lat', id: 'lat')
f.hidden_field(:coordinates, multiple: true, class: 'lng', id: 'lng')

JavaScript

// ...
    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]