使用turbolinks

时间:2016-10-17 15:50:26

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

我正在使用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密钥的谷歌地图会有任何问题吗?

1 个答案:

答案 0 :(得分:1)

我想我已经解决了,似乎把javascripts放在身体的尽头并不是一个好主意,就像我一样。

在turbolinks 5文档中,据说将其放在mkdir bootstrap/cache上。

现在我把脚本放在头上,看起来它没有问题,我看不到谷歌地图api的多个加载消息。