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