【问题标题】:How to go from Erb to Haml Javascript如何从 Erb 到 Haml Javascript
【发布时间】:2014-01-09 13:17:31
【问题描述】:

我正在尝试将我的 erb 文件转换为 haml。我想我可以对大部分代码进行字符串插值,但是在尝试使用仅接受数字的 JavaScript Leaflet 函数 L.polygon() (http://leafletjs.com/reference.html#polygon) 时遇到了问题。 这是我的 erb 代码:

<h1>MAP!</h1>
<ul>
<li>Start: <%= @start %></li>
<li>End: <%= @end %></li>
</ul>
<div id="map"></div>
<script type="text/javascript" charset="utf-8">
  var map = L.map('map').setView([40.7142, -74.0064], 13);
  L.tileLayer('http://tile.stamen.com/toner/{z}/{x}/{y}.png', {attribution: 'Stamen Toner'}, {
    attribution: 'Map data &copy; <a href="http://openstreetmap.org">OpenStreetMap</a> contributors, <a href="http://creativecommons.org/licenses/by-sa/2.0/">CC-BY-SA</a>, Imagery © <a href="http://cloudmade.com">CloudMade</a>',
    maxZoom: 18
  }).addTo(map);
  L.marker(<%= @start %>).addTo(map);
  L.marker(<%= @end %>).addTo(map);
  L.polygon([
    <%= @start %>,
    <%= @end %>
]).addTo(map);
</script>

这是我不太正常的 HAML 代码:

%h1 MAP!
%ul
  %li
    Start: #{@start}
  %li
    End: #{@end}
#map
%script{charset: "utf-8", type: "text/javascript"}
  var map = L.map('map').setView([40.7142, -74.0064], 13);
  L.tileLayer('http://tile.stamen.com/toner/{z}/{x}/{y}.png', {attribution: 'Stamen Toner'}, {
  attribution: 'Map data © <a href="http://openstreetmap.org">OpenStreetMap</a> contributors, <a href="http://creativecommons.org/licenses/by-sa/2.0/">CC-BY-SA</a>, Imagery © <a href="http://cloudmade.com">CloudMade</a>',maxZoom: 18}).addTo(map);
  L.marker(#{@start}).addTo(map);
  L.marker(#{@end}).addTo(map);
  L.polygon([#{@start},#{@end}]).addTo(map);

【问题讨论】:

  • 怎么不工作了?您最好使用javascript filter 来避免Haml 尝试解析js,但在这种情况下,我认为这无关紧要。

标签: javascript haml erb leaflet


【解决方案1】:

尝试使用parseInt:

L.polygon([parseInt(#{@start}),parseInt(#{@end})]).addTo(map);

【讨论】:

  • 谢谢你,但它似乎没有用。这是呈现的 HTML L.polygon([parseInt(["40.767272", "-73.993928"]),parseInt(["40.71625", "-74.009105"])]).addTo(map); 的示例
  • 您可以在此评论中重新发布您的模板代码吗?它试图在 Array 的坐标上运行 parseInt() 真的很奇怪。
  • 抱歉,我忘了提到变量@start 和@end 都是[latitude, longitude] 值的数组,作为params 中的字符串。我正在使用 Sinatra,这是我的发布路线代码 post '/map' do @start = params["start"] @end = params["end"] haml :map end
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-10-06
  • 2012-06-06
  • 1970-01-01
相关资源
最近更新 更多