通过 HTML 将 Ruby on Rails 变量传递给 JavaScript 函数

passing ruby on rails variables to javascript function via html

本文关键字:JavaScript 函数 变量 Rails HTML Ruby on 通过      更新时间:2023-09-26

我有以下代码:

<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>