导轨4带有涡轮和窗户负载

Ale*_*emo 9 javascript ruby-on-rails turbolinks ruby-on-rails-4

我正在使用Rails 4.

我正在尝试使用此脚本来显示谷歌地图.我有一个不同地方的页面,每个地方都有一个地址.它显示在谷歌地图中.
所以我正在使用分页,在每个页面上我有4个位置.gmap的4个脚本.
但是这个脚本仅在页面重新加载(ctrl + R或F5)时初始化,这是因为turbolinks.

我怎样才能让它以最简单的方式工作?

<script>
  function initialize() {
    var myLatlng = new google.maps.LatLng(<%= place.latitude %>, <%= place.longitude %>); 
    var mapOptions = {
      zoom: 16,
      center: myLatlng
    };
    var map = new google.maps.Map(
      document.getElementById("map-canvas-<%= place.id %>"),
      mapOptions);
    var marker = new google.maps.Marker({
      position: myLatlng,
      map: map,
      title: '<%= place.title %>'
    });
  }

  google.maps.event.addDomListener(window, 'load', initialize);
</script>
Run Code Online (Sandbox Code Playgroud)

那是剧本.每个地图的div看起来像这样:

<div id="map-canvas-<%= place.id %>"></div>
Run Code Online (Sandbox Code Playgroud)

Pet*_*kov 18

您需要通过turbolinks初始化脚本.检查这个关于turbolinks的ASCIIcast.

一般来说,你需要改变......

jQuery(function() {
  # your script
});
Run Code Online (Sandbox Code Playgroud)

...至...

var ready;
ready = function() {
  # your script
};

$(document).ready(ready);
$(document).on('page:load', ready);
Run Code Online (Sandbox Code Playgroud)

所有涡轮连接活动都可以在这里找到.

Turbolinks的更新5

page:load已改为turbolinks:load,所以你要写:

var ready;
ready = function() {
  # your script
};

$(document).on('turbolinks:load', ready);
Run Code Online (Sandbox Code Playgroud)

您不再需要$(document).ready();turbolinks:load那样指定.有关更多信息,请查看自述文件.

  • 好答案.只是为了让大家都知道,[Turbolinks 5.0beta](https://github.com/turbolinks/turbolinks)已经出局了.`page:load`现在是`turbolinks:load` (4认同)
  • 啊@RubyRacer,你刚刚节省了我几个小时 (2认同)