ruby on rails: leaflet-rails not loading

不打扰是莪最后的温柔 提交于 2019-12-07 02:15:33

Turns out this is maybe some RoR specific issue.

Many sites recommend to put the

<%= javascript_include_tag 'application', 'data-turbolinks-track' => true %>

line which loads the javascripts, at the END of a file, in order to speed up page display. With the leaflet-rails gem, this isn't great, and will generate the problem described above. If putting the same line in the <head> section, the problem goes away...

P.S. I still have problems with the gem though, now I get

Error: No value provided for variable {s}

If I substitute "http://{s}.tile.osm.org/{z}/{x}/{y}.png" with "http://a.tile.osm.org/{z}/{x}/{y}.png" it works...don't think it's meant to work that way though...but that's a different issue...

I faced the same issue in rails.

  • leaflet works in development mode (bower managed)
  • Can't find variable L in production mode

The following steps did not help.

  • asset "leaflet" (Bowerfile)
  • //= require leaflet/dist/leaflet.js (application.js)
  • *= require leaflet/dist/leaflet.css (application.css)
  • Rails.application.config.assets.precompile += ['leaflet/dist/leaflet.js', 'leaflet/dist/leaflet.css']
  • assets precompiled and uploaded to production public/assets/...

Am I still missing something?

[solution]

This issue can be resolved by using CDN assets recommended by leaflet at http://leafletjs.com/examples/quick-start/

  • <link rel="stylesheet" href="https://unpkg.com/leaflet@1.0.1/dist/leaflet.css" />
  • <script src="https://unpkg.com/leaflet@1.0.1/dist/leaflet.js"></script>

However, I would prefer to use local cached precompiled assets bundled at my app-server instead of relying on a public CDN, network bandwidths, and a lot more external things.

Don't know if you were able to solve your issue. For me, I had forgotten to run:

rake assets:precompile

before deploying to production.

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!