2013-10-28 42 views
0

通過在軌道上的變量紅寶石javascript函數我有以下代碼:通過HTML

<table id = "mytable"> 
    <tbody> 
     <% @event.each do |event| %> 
      <!-- call javascript function here --> 
     do_stuff (<%= event %>) 
     <% end %> 
    </tbody> 
</table> 

結果是:

do_stuff(#<Event:0x1118119d> do_stuff(#<Event:0x432c632f> do_stuff(#<Event:0x1723c51d> do_stuff(#<Event:0x2d61fec9> do_stuff(#<Event:0x7c9e5565> do_stuff(#<Event:0x7ef899cd> do_stuff(#<Event:0x7339a2da> 

什麼是正確的語法來調用javascript函數do_stuff?

+1

你想傳遞給'do_staff什麼說法'? –

+0

do_stuff是一種方法還是什麼..? –

+0

我想將rails上的每個ruby事件傳遞給JavaScript方法do_stuff,這是一個JavaScript腳本方法。這應該很容易,不是嗎? – rupweb

回答

0

謝謝,其實什麼是最好的工作是創建一個JavaScript對象,從我的Ruby對象填充它,然後調用javascript函數我要運行:

<script type="text/javascript"> 
     x = new Object(); 
     x.attr1 = "<%= event.attr1 %>"; 
     x.attr2 = "<%= event.attr2 %>"; 

     do_stuff(x); 
    </script> 
1

你需要用的JavaScript腳本標籤:

<script type="text/javascript">do_stuff('<%= event %>')</script> 

而且可以肯定的是,整個事件對象是你想傳遞什麼,因爲JavaScript的不知道該怎麼辦。把它分解成你想發送的任何事件屬性:

<script type="text/javascript">do_stuff('<%= event.attribute1 %>', '<%= event.attribute2 %>')</script> 
1

我建議這樣做有點不同。通過使用類似gon gem的東西,您可以使@event變量對JavaScript函數可見。然後,在JavaScript中完成整個循環,以便在HTML視圖中使用較少的Ruby代碼。您可以使用普通的javascript,或者像jquery,lodash這樣的庫中的便利函數,或者可能使用的任何其他JavaScript庫來遍歷數組。