我正在使用谷歌地图开发应用程序。我试图让用户能够长按一个位置并显示该位置的标记,然后在该标记信息窗口中将有方向链接(下一次迭代)并将该位置添加为保存区域,我目前正在做的工作。我有代码
google.maps.event.addListener(map, 'mousedown', function(event){
var counter=setInterval(timer, 1000);
var latLng=event.latLng;
var contentString= '<%= link_to "Add Parking Area", free_parking_areas_path(latLng), method: :post, id: "pass_latLng"%>'
var infowindow = new google.maps.InfoWindow({
content: contentString
});
google.maps.event.addListener(map, 'mouseup', function(event){
clearInterval(counter);
});
function timer(){
count=count-1;
if (count <= 0)
{
var marker = new google.maps.Marker({
position: latLng,
map: map,
title: "Unsaved Marker"
});
marker.addListener("click", function(){
infowindow.open(map, marker);
});
return;
}
}
});
但这只会引发错误ActionView::Template::Error (undefined local variable or method 'latLng' for #<#<Class:0x007fdee654f688>:0x007fdeeb1f16d0>):
。知道如何将javascript变量传递给我的控制器吗?
答案 0 :(得分:0)
在javascript执行之前很久就会呈现rails link_to
帮助器,因此当latlng
帮助程序生成html链接时,javascript link_to
变量将永远不会被设置。
您需要在JS中手动设置链接或使用其中任何一个(或其他)的外部源:
将服务器端数据/路由暴露给客户端站点。
希望有所帮助!