HAML中的Ruby in JS:语法是什么?

时间:2016-11-16 19:16:34

标签: javascript ruby-on-rails ruby haml ruby-on-rails-5

我在HAML视图结束时得到了这个JS:

result = re.findall("'x':\s[-+]?\d*\.*\d+", info)
digits = [ i.split(":")[1] for i in result ]

如何解析:javascript function initMap() { var map = new google.maps.Map(document.getElementById('leadsMap')), markers = [], bounds = new google.maps.LatLngBounds(); - @leads.each do |lead| - next unless lead.latitude && lead.longitude var marker = new google.maps.Marker({ position: {lat: #{lead.latitude}, lng: #{lead.longitude}}, map: map }); markers.push(marker); for (var i = 0; i < markers.length; i++) { bounds.extend(markers[i].getPosition()); } map.fitBounds(bounds); } 以使循环正常工作?目前我发现@leads错误。

2 个答案:

答案 0 :(得分:0)

...
%script
  - @leads.each do |lead|
    - next unless lead.latitude && lead.longitude
    var lead_latitude = "#{lead.latitude}";
    var lead_longitude = "#{lead.longitude}";
    var marker = new google.maps.Marker({
      position: {lat: lead_latitude, lng: lead_longitude},
      map: map
    });
...

我忘记了google maps api是否允许在字符串中使用lat和lng,但您可以将lead_latitudelead_longitude转换为他们的需要(parseIntparseDouble等)。

如果你仍然坚持在haml

中将ruby变量放在js中

答案 1 :(得分:0)

如果你真的想在JS中使用你的Ruby变量,我建议使用gon来完成这个。

那就是说,我强烈建议不要使用脚本标签,因为出于安全考虑,你可能希望阻止所有脚本标签,从而阻止大多数形式的XSS。