0

我有以下代码:

<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 的正确语法是什么?

4

3 回答 3

1

我建议以不同的方式构建它。通过使用gon gem之类的东西,您可以使@event变量对 javascript 函数可见。然后,在 javascript 中执行整个循环,这样您的 html 视图中的 ruby​​ 代码就更少了。您可以使用纯 javascript 或来自库(如 jquery、lodash 或您碰巧使用的任何其他 javascript 库)中的便利函数来循环数组。

于 2013-10-28T14:27:43.567 回答
1

您需要将 javascript 包装在脚本标签中:

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

并确保整个事件对象是您想要传递的,因为 javascript 不知道如何处理它。将其拆分为您要发送的任何事件属性:

<script type="text/javascript">do_stuff('<%= event.attribute1 %>', '<%= event.attribute2 %>')</script>
于 2013-10-28T14:01:47.100 回答
0

谢谢,实际上最好的方法是创建一个 javascript 对象,从我的 ruby​​ 对象中填充它,然后调用我要运行的 javascript 函数:

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

      do_stuff(x);
  </script>
于 2013-10-28T17:08:58.343 回答