[英]passing ruby on rails variables to javascript function via 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的正確語法是什么?
你需要在腳本標簽中包裝javascript:
<script type="text/javascript">do_stuff('<%= event %>')</script>
並確保整個事件對象是您想要傳遞的,因為javascript將不知道如何處理它。 將其拆分為您要發送的任何事件屬性:
<script type="text/javascript">do_stuff('<%= event.attribute1 %>', '<%= event.attribute2 %>')</script>
我建議稍微改變一點。 通過使用像gon gem這樣的東西,你可以使@event
變量對javascript函數可見。 然后,在javascript中執行整個循環,這樣你的html視圖中的ruby代碼就會減少。 你可以使用普通的javascript循環數組,或者像jquery,lodash或者你正好使用的任何其他javascript庫這樣的庫中的便捷函數。
謝謝,實際上最好的方法是創建一個javascript對象,從我的ruby對象填充它,然后調用我想運行的javascript函數:
<script type="text/javascript">
x = new Object();
x.attr1 = "<%= event.attr1 %>";
x.attr2 = "<%= event.attr2 %>";
do_stuff(x);
</script>
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.