2012-02-07 55 views
2

我决定将我的模板技术更新到HAML。我是新来的吧,想知道这是不可能的:如何从HAML的内部运行每个块:javascript?

:javascript  
    <% @checkins.each do |checkin| %> 
    var latLng = new google.maps.LatLng(<%= checkin.latitude %>, <%= checkin.longitude %>); 

    var marker = new google.maps.Marker({ 
     position: latLng, 
     map: map, 
     title: '<%= escape_javascript(checkin.title) %>' 
    }); 

    google.maps.event.addListener(marker, 'click', function() { 
     document.location = '<%= checkin_path(checkin) %>'; 
    });  
    <% end %> 

可以很容易地看到,我有问题的代码部分与是与Ruby代码的那些

<% @checkins.each do |checkin| %> 

document.location = '<%=checkin_path(checkin) %>'; 

我试图后者更改为:

- @checkins.each do |checkin| 

但它到目前为止还没有解决。我已经在这里阅读了许多关于同一主题的其他问题,但我还没有真正找到一个“直截了当”的答案。

+0

看这个http://stackoverflow.com/questions/5864500更换/ how-to-run-ruby-in-haml-in-javascript-definition – Awea 2012-02-07 18:52:56

+0

[有没有办法在HAML中使用Ruby循环:javascrip t区域?](http://stackoverflow.com/questions/2962119/is-there-a-way-to-use-a-ruby-loop-inside-of-hamls-javascript-region) – 2012-02-07 19:19:57

+0

是的,那些是类似的问题,我发布之前读过,但像我说的没有直接解决这个问题恕我直言。对不起, – jlstr 2012-02-07 20:21:35

回答

1

尝试

#{ @checkins.each.do |checkin| 

更换<% @checkins.each do |checkin| %>}

而且取代你end陈述你的<%= %>只有checkin.whateverproperty

+0

嗯,这似乎并不奏效。我是否错过了一些东西,因为在这个变化中,我在下面的JavaScript代码行中遇到了新的错误。 即。语法错误,意外tidENTIFIER,期待keyword_do或'{'或'(' var latLng = new google.maps.LatLng(checkin.latitude ... ...以及更多。 – jlstr 2012-02-07 20:23:22

+0

尝试简化循环,只是做var mytext =“Bob”,如果那是有效的,那么它就是你包括checkin.whateverproperty的地方......我认为它的语法就像#{checkin.whateverproprty} – Webjedi 2012-02-07 22:09:17