繁体   English   中英

在脚本标签中使用Ruby变量

[英]Using Ruby Variable in Script Tag

我在我的rails控制器中定义对讲事件,如下所示:

object_controller.rb

@object.save
@intercom_event = 'object-saved'

在我的application.html.erb中存在的部分文件中,我试图运行此脚本:

<script>
  Intercom('trackEvent', '<%= @intercom_event %>');
</script>

脚本将运行,并按照预期方式将事件发送给对讲机。 我以为我将ruby变量正确地放置在<script>标记中,除了@intercom_event的输出为: <%= @intercom_event %> ,应为: object-saved

另外,如果我将这个<script>标记包装在if语句中(这样它就不会在每次重新加载页面时都不发送事件),如下所示:

<% if @intercom_event.present? %>
  <script>
    Intercom('trackEvent', '<%= @intercom_event %>');
  </script>
<% end %>

即使定义了@intercom_event ,它也将完全忽略脚本。

通过查看参数是否存在而不是@intercom_event变量来使其工作

<% if params[:intercom].present? %>
  <script>
    Intercom('trackEvent', '<%= params[:intercom] %>');
  </script>
<% end %>

您在正确的轨道上:

<%- if @intercom_event.present? -%>
  <%= javscript_tag do -%>
    Intercom('trackEvent', '<%=j @intercom_event %>');
  <%- end -%>
<%- end -%>

j方法针对JavaScript上下文进行转义,就像伴侣方法h针对HTML进行转义。 这对于避免脚本错误很重要。

对于更复杂的结构, @intercom_event.to_json将为您提供JavaScript兼容的表示形式。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM