Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/365.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 谷歌地图和ROR 3.1_Javascript_Ruby On Rails_Google Maps Api 3 - Fatal编程技术网

Javascript 谷歌地图和ROR 3.1

Javascript 谷歌地图和ROR 3.1,javascript,ruby-on-rails,google-maps-api-3,Javascript,Ruby On Rails,Google Maps Api 3,我正在尝试使用以下代码使ROR 3.1中的工作正常: 在app/assets/javascripts/application.js中 $(document).ready(function(){ initialize($("div#map_canvas").get(0)); }); function initialize(element) { var latlng = new google.maps.LatLng(-34.397, 150.644); var myOption

我正在尝试使用以下代码使ROR 3.1中的工作正常:

在app/assets/javascripts/application.js中

$(document).ready(function(){
    initialize($("div#map_canvas").get(0));
  });

function initialize(element) {
  var latlng = new google.maps.LatLng(-34.397, 150.644);
  var myOptions = {
    zoom: 8,
    center: latlng,
    mapTypeId: google.maps.MapTypeId.ROADMAP
  };
  var map = new google.maps.Map(element, myOptions);
  alert("test");
}
在我的模型视图中,部分app/views/rides/_ride.html.erb

<li>
  <div id="map_canvas" style="width:100%; height:100%"></div>
</li>
 <%= javascript_include_tag :application,  
    "http://maps.googleapis.com/maps/api/js?sensor=false" %>
  • 我在app/views/layouts/application.html.erb中有这个

    <li>
      <div id="map_canvas" style="width:100%; height:100%"></div>
    </li>
    
     <%= javascript_include_tag :application,  
        "http://maps.googleapis.com/maps/api/js?sensor=false" %>
    
    
    
    我是ROR的新手,所以对于我所做错事的任何帮助,我都表示感谢。看起来javascript正在运行(出现警告消息),但映射从未显示


    谢谢。

    首先,在使用
    时,标记帮助程序应在包含其他默认js文件后,在末尾自动包含application.js(如果存在)

    没有加载地图,因为没有正确包含google map js文件。
    javascript\u include\u标记
    helper获取指向javascript文件的相对和绝对路径。在您的情况下,它只使用带有参数的绝对路径,它不会发送sensor=false之类的参数。这就是为什么您会在代码末尾收到警报,但不会生成映射。如果您检查完成此操作的页面的HTML,那么您将看到将包含的js文件是

    <script src="http://maps.googleapis.com/maps/api/js?sensor=false.js" type="text/javascript"></script>
    
    
    
    这是错误的。 使用下面的行,您可以以正确的方式包含它,因为在参数中可以正确地传递

    <script src="http://maps.googleapis.com/maps/api/js?sensor=false" type=text/javascript"> </script>
    
    在您的视图中

    <meta name="viewport" content="initial-scale=1.0, user-scalable=no" />
    <body onload="initialize()">
      <div id="map_canvas" style="width:100%; height:100%"></div>
    </body>
    
    在CSS中

    html { height: 100% }
    body { height: 100%; margin: 0; padding: 0 }
    #map_canvas { height: 100% }
    
    并将其包含在布局/应用程序中

    <script type="text/javascript" src="http://maps.googleapis.com/maps/api/js?sensor=false"></script>
    
    
    
    谢谢您的帮助。通过将
    $(“div#map_canvas”).get(0)
    传递给我的
    initialize()
    函数,我想我现在传递的是一个HTML DOM元素,而不是jQuery对象。但是我不明白你说我的javascript_include_标签有什么问题。另外,不管您和文档怎么说,如果我删除
    应用程序
    ,生成的HTML不包括该链接。与googleapis的链接似乎运行良好。还有什么想法吗?很好,jQuery-get就是你需要的。当您将绝对路径传递给javascript_include_标记帮助器时,它将其作为js文件的src属性。然而,您需要的是一种将参数传递给请求的方法,请求包含javascript文件。从上面的帖子中,如果你尝试上述两种方法,你会发现生成的HTML会有所不同。助手会向传递的路径添加一个.js(URL后面的a.js是随URL传递的参数)。如果您检查生成的HTML,它会显示这不是您想要的。我没有得到您注意到的.js扩展名(我使用的是Rails 3.1),但是,我认为我通过更改设置为0px的高度/宽度的CSS样式解决了我的问题。我不知道为什么100%的风格不起作用。我切换到blueprint CSS并将高度和宽度设置为精确的px值。嗯。。奇怪。我在Rails 2应用程序上尝试了这一点,发现生成的包含脚本的HTML是错误的。不确定,可能在Rails 3中,助手正确地处理参数。