![](/img/trans.png)
[英]Embed ruby interpolation into <script> tag of html string (variable)?
[英]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.