将LatLng从谷歌地图点击事件传递给rails控制器

时间:2016-05-12 19:00:33

标签: javascript ruby-on-rails google-maps

我正在使用谷歌地图开发应用程序。我试图让用户能够长按一个位置并显示该位置的标记,然后在该标记信息窗口中将有方向链接(下一次迭代)并将该位置添加为保存区域,我目前正在做的工作。我有代码

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变量传递给我的控制器吗?

1 个答案:

答案 0 :(得分:0)

在javascript执行之前很久就会呈现rails link_to帮助器,因此当latlng帮助程序生成html链接时,javascript link_to变量将永远不会被设置。

您需要在JS中手动设置链接或使用其中任何一个(或其他)的外部源:

将服务器端数据/路由暴露给客户端站点。

希望有所帮助!