0

我的 application.js 出现“ReferenceError: google is not defined”错误

这是我的 js 包含的内容:

$(document).ready(function(){
var input = document.getElementById('searchTextField');
var options = {
types: [],
componentRestrictions: {country: 'in'}
};
var autocomplete = new google.maps.places.Autocomplete(input, options);
});

不明白为什么会出现这个错误。我的搜索功能工作正常,但 Web 控制台出现此错误。

有人可以告诉解决方案吗?

4

2 回答 2

1

正如邓肯所说,问题可能出在包含标签上。

我在显示页面顶部包含了 GoogleMaps API(所以在 HEAD 标签之外)

<%= javascript_include_tag "https://maps.google.com/maps/api/js?key=#{ENV['GOOGLE_MAPS_API_KEY']}" %> 

为了摆脱这个

ReferenceError:谷歌未定义

我将包含 API 的位置从显示页面顶部更改layouts/application.html.erb 为 head 标签。

<head>
<%= javascript_include_tag "https://maps.google.com/maps/api/js?key=#{ENV['GOOGLE_MAPS_API_KEY']}" %> 
</head>
于 2017-03-19T12:01:21.997 回答
0

请更改顺序:首先

<script src="maps.googleapis.com/maps/api.... >

然后

 <%= text_field_tag 'search', nil, :id=>"searchTextField", :class => "homecatg" %>

在这种情况下,谷歌将在使用前定义。

于 2018-01-24T05:31:18.980 回答