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]
我在我的应用程序中设置了 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]