我正在使用rails 5和turbolinks 5,我不想禁用turbolinks,但是它多次加载google maps api。
我搜索了很多,我找到了很多针对rails 4和turbolinks 3的解决方案。我尝试了所有我看过的解决方案,但都没有。
其中一个看起来很简单:
<script src="http://maps.googleapis.com/maps/api/js?v=3.exp" type="text/javascript" data-turbolinks-eval="always"></script>
但仍然多次加载谷歌地图。
其中一个是:
<script src="http://maps.googleapis.com/maps/api/js?v=3.exp" type="text/javascript" data-turbolinks-track="reload"></script>
但是既不起作用。
一个有希望的解决方案是:
var ready;
ready = function() {
var script = document.createElement('script');
script.type = 'text/javascript';
script.src = 'http://maps.googleapis.com/maps/api/js?v=3.exp';
document.body.appendChild(script);
};
$(document).ready(ready);
$(document).on('turbolinks:load', ready);
但是这个有时不会在地图之前加载谷歌地图,有时会返回多次加载的错误。
我读了很多,有很多问题要问同样的问题,但我找不到任何一个有效的解决方案。
PD:我现在看到我删除了谷歌地图的api密钥,它仍然有效但我在控制台中读了一条错误信息。Google Maps API warning: NoApiKeys
如果我在生产中使用没有api密钥的谷歌地图会有任何问题吗?
答案 0 :(得分:1)
我想我已经解决了,似乎把javascripts放在身体的尽头并不是一个好主意,就像我一样。
在turbolinks 5文档中,据说将其放在mkdir bootstrap/cache
上。
现在我把脚本放在头上,看起来它没有问题,我看不到谷歌地图api的多个加载消息。