我在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
错误。
答案 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_latitude
和lead_longitude
转换为他们的需要(parseInt
,parseDouble
等)。
如果你仍然坚持在haml
中将ruby变量放在js中答案 1 :(得分:0)
如果你真的想在JS中使用你的Ruby变量,我建议使用gon来完成这个。
那就是说,我强烈建议不要使用脚本标签,因为出于安全考虑,你可能希望阻止所有脚本标签,从而阻止大多数形式的XSS。