簡體   English   中英

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

[英]Ruby in JS in HAML: what's the syntax?

我的HAML視圖結尾處有這個JS:

: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以使循環正常工作? 目前我得到一個undefined local variable or method 'lead'錯誤。

嘗試

...
%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
    });
...

我忘記了谷歌地圖api是否允許在字符串中使用lat和lng,但你可以將lead_latitudelead_longitude轉換為他們的需要( parseIntparseDouble等)。

如果你仍然堅持在haml中將ruby變量放在js中

如果你真的想在JS中使用你的Ruby變量,我建議使用gon 59來完成這個。

也就是說,我強烈建議不要使用腳本標記,因為出於安全原因,您可能希望阻止所有腳本標記,從而阻止大多數形式的XSS。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM