Rails link_to不加载传单映射

时间:2016-10-22 16:44:57

标签: ruby-on-rails-4 coffeescript leaflet

我遇到了一个非常奇怪的问题(至少对我而言)。当我手动输入网址时,地图加载得很好,但是,当我使用链接(rails或href)时,地图将不会加载,直到我点击刷新。

有什么想法吗?

routes.rb

Rails.application.routes.draw do
    root 'page#map'
end

application.html.erb

<!DOCTYPE html>
<html>
<head>
  <title>LeafletTest</title>
  <meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=no" />
  <%= stylesheet_link_tag    'application', media: 'all', 'data-turbolinks-track' => true %>
  <%= javascript_include_tag 'application', 'data-turbolinks-track' => true %>
  <%= csrf_meta_tags %>
</head>
<body>

<%= yield %>

</body>
</html>

map.html.erb

<%= link_to("reload page (rails)", root_path) %><br />
<a href="\">reload page (a href)</a><br />

<div id="mapid"></>

page.scss

#mapid {
  width: 100%;
  height: 600px;
}

page.coffee

$ ->
  map = L.map('mapid').setView([
    51.505
    -0.09
  ], 13)
  L.tileLayer('http://{s}.tile.osm.org/{z}/{x}/{y}.png', attribution: '&copy; <a href="http://osm.org/copyright">OpenStreetMap</a> contributors').addTo map

2 个答案:

答案 0 :(得分:1)

我能够通过确保每次渲染地图时都创建新的TileLayer来解决此问题,即turbolinks:load被触发时。

答案 1 :(得分:0)

在其他一些帖子的帮助下,我终于发现这是由于Turbolinks以及它调用页面加载的方式。将data: { turbolinks: false}属性添加到我的rails链接有助于清除它。我想这对于非rails链接会起作用(使用正确的格式化)。