【问题标题】:Rails link_to not loading leaflet mapRails link_to 未加载传单地图
【发布时间】:2017-03-04 19:46:16
【问题描述】:

我遇到了一个非常奇怪(至少对我而言)的问题。当我手动输入网址时,地图加载得很好,但是,当我使用链接(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

【问题讨论】:

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


    【解决方案1】:

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

    【讨论】:

      【解决方案2】:

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

      【讨论】:

        猜你喜欢
        • 2013-07-10
        • 2017-06-26
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2015-02-04
        • 1970-01-01
        • 2016-12-14
        相关资源
        最近更新 更多