我在我的应用程序中设置了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变为
params[:my_object][:coordinates] # => ["[x, y]"]
# Wanted: [x, y]
我是否必须手动将字符串解析为数组,还是有技巧?
此外,这个输入需要消毒,数字转换为浮动,任何指南,如何做到这一点"整洁" ?
答案 0 :(得分:0)
您需要添加2个字段,并且您可能希望隐藏它们。
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]