使用Ruby on Rails设置Leaflet

时间:2014-04-06 22:39:35

标签: ruby-on-rails leaflet

我正在尝试在我的rails应用程序中正确设置传单,我遇到了一些麻烦。我遵循此处列出的步骤Github Leaflet Repo。我已经在顶部做了一些微不足道的事情,现在正在Headers标题下。

我正在使用OpenStreetMaps,所以我的leaflet.rb文件看起来像这样。 (我必须自己创建这个文件,因为它还不存在)

Leaflet.tile_layer = 'http://{s}.tile.openstreetmap.org/{z}/{x}/{y}.png'
Leaflet.attribution = '&copy; <a href="http://openstreetmap.org">OpenStreetMap</a> contributors, <a href="http://creativecommons.org/licenses/by-sa/2.0/">CC-BY-SA</a>'
Leaflet.max_zoom = 18

现在,我正在尝试插入传单地图的视图当前看起来像这样。

<% provide(:title, 'Map') %>
<h1>Map</h1>
<div id="map"><%

    map(:center => {
    :latlng => [51.52238797921441, -0.08366235665359283],
    :zoom => 18
    })

%>
</div>
<p>Find me in app/views/dynamic_pages/map.html.erb</p>

当我启动我的rails服务器时,div中只有空白区域,即没有地图。 div在我的css文件中设置为高度为500px,如果这有任何区别,我不认为它。

我在这里做错了什么?

1 个答案:

答案 0 :(得分:5)

我相信你现在已经弄清楚了......但是万一其他人被卡住了。 Leaflet-rails documentation遗漏了有关如何发生这种情况的详细信息,但地图帮助 在视图中可用。它必须在<%= %>标签中才能显示;上面的问题是erb标签缺少=它应该是这样的,

<div id="map">
  <%=
    map(:center => {
      :latlng => [51.52238797921441, -0.08366235665359283],
      :zoom => 18
    })
  %>
</div>

作为旁注,erb标记中的=告诉解释器以下代码是一个表达式,意味着作为字符串返回给文档。如果没有=这样<% %>的错误评估代码,则不会尝试返回代码。有关详情,请参阅this博客文章。