使用Gmaps4Rails:无法执行'写' on' Document'错误

时间:2014-07-01 15:57:11

标签: ruby-on-rails twitter-bootstrap gmaps4rails gmaps4rails2

所以,我必须承认我是rails的新手,所以我担心我可能会遗漏一些非常明显的东西,但我不断收到Gmaps4Rails gem的错误消息。环顾四周,我无法在任何地方找到这个问题所以我想我已经忘记了一些非常重要的事情,以至于没有其他人似乎有这个问题。

我知道我关闭了,因为每当我刷新页面时,整个事情就会神奇地起作用,所以,我知道它是一个时间问题。如果有帮助,我也会使用Bootstrap。

我不断收到的错误信息是:

无法执行'写' on' Document':除非明确打开,否则无法从异步加载的外部脚本写入文档。

查看代码:

<strong>Map:</strong>
<div id="map-canvas"/></div>



<% content_for :scripts do %>
<script src="//maps.google.com/maps/api/js?v=3.13&amp;sensor=false&amp;libraries=geometry" type="text/javascript"></script>
<script src='//google-maps-utility-library-v3.googlecode.com/svn/tags/markerclustererplus/2.0.14/src/markerclusterer_packed.js' type='text/javascript'></script>
<script type="text/javascript">

  handler = Gmaps.build('Google');
  handler.buildMap({ provider: {}, internal: {id: 'map-canvas'}}, function(){
    markers = handler.addMarkers(<%= raw @hash.to_json %>)
    handler.bounds.extendWith(markers);
    handler.fitMapToBounds();
  });
</script>

<% end %> 

Application.html.erb代码:

<body>

<ul class="nav nav-tabs">
  <li><%= link_to 'Services', services_path %></li>
  <li><%= link_to 'Users', users_path %></li>
  <li><%= link_to 'Sign In', user_sessions_new_path %></li>
  <li><%= link_to "Log Out", logout_path, method: :delete %></li>
  <li>You are signed in as : <%= session[:username] %></li>
</ul>

<%= yield %>
<%= yield :scripts %>
</body>

控制器代码:

def index
    @services = Service.all
    @hash = Gmaps4rails.build_markers(@services) do |service, marker|
      marker.lat service.lat
      marker.lng service.long
    end
  end

所以,我尝试过的一些事情包括:

  • 包括&#39; callback = initialize&#39;进入google maps api脚本,然后在页面加载后调用onload。
  • 将脚本放在几乎所有你能想象到的地方

还有来自互联网的其他几个人,但他们都没有工作,感叹。 请指教。

1 个答案:

答案 0 :(得分:0)

尝试在dom上运行脚本,使用jquery:

$(function() {
  handler = Gmaps.build('Google');
  handler.buildMap({ provider: {}, internal: {id: 'map-canvas'}}, function(){
    markers = handler.addMarkers(<%= raw @hash.to_json %>)
    handler.bounds.extendWith(markers);
    handler.fitMapToBounds();
  });
})