簡體   English   中英

通過html將rails變量上的ruby傳遞給javascript函數

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM