2012-02-07 48 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