我有以下代码:
<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的正确语法是什么?
答案 0 :(得分:1)
您需要将javascript包装在脚本标记中:
<script type="text/javascript">do_stuff('<%= event %>')</script>
并确保整个事件对象是您想要传递的,因为javascript将不知道如何处理它。将其拆分为您要发送的任何事件属性:
<script type="text/javascript">do_stuff('<%= event.attribute1 %>', '<%= event.attribute2 %>')</script>
答案 1 :(得分:1)
我建议稍微改变一点。通过使用gon gem之类的内容,您可以使@event
变量对javascript函数可见。然后,在javascript中执行整个循环,这样你的html视图中的ruby代码就会减少。你可以使用普通的javascript循环数组,或者像jquery,lodash或者你正好使用的任何其他javascript库这样的库中的便捷函数。
答案 2 :(得分:0)
谢谢,实际上最好的方法是创建一个javascript对象,从我的ruby对象填充它,然后调用我想要运行的javascript函数:
<script type="text/javascript">
x = new Object();
x.attr1 = "<%= event.attr1 %>";
x.attr2 = "<%= event.attr2 %>";
do_stuff(x);
</script>