我希望能够通过
javascript循环实例var但我不太确定如何使它工作.
javascript: -@spots.each do |spot| map.addMarker({ lat: "#{spot.latitude}",lng: "#{spot.longitude}",title: "spot",}); });
我尝试了什么:
使用<%@ spots.each do | spot | %GT;没有#{}的引号
解决方法
看来,一旦你进入javascript:slim块,你就不能再进行ruby循环了.
我能够得到这个主要是工作
- @spots.each do |spot| javascript: map.addMarker({ lat: #{spot.latitude},lng: #{spot.longitude},title: "spot" });
但这会为每个addMarker调用创建单独的脚本标记,这看起来非常愚蠢.
您还可以尝试将数据作为JSON放在页面上,然后在Javascript中执行循环.像这样的东西:
javascript: var spots = #{raw @spots.to_json}; var ii = 0; var nspots = spots.length; for(;ii<nspots;++ii) { theMap.addMarker(spots[ii]); }
你想确保在这个东西运行时地图可用,但我认为这可能会有所帮助.您还应该检查每个@spot的JSON格式.根据您如何设置JSON,每个点可能看起来像
{'spot': { 'latitude': ###,'longitude': ### } }
这意味着你必须取消引用循环中的对象.