【发布时间】:2012-01-21 23:13:36
【问题描述】:
我正在尝试做一件简单的事情:
_flash.js.erb:
$("#alerts").append("<%=j render :template => "shared/_flash.html.erb" %>");
注意
_flash.html.erb:
<% flash.each do |key, value| %>
<div class="alert-message top <%= "#{key}" %> fade in" data-alert="alert">
<a class="close" href="#">x</a>
<p><%=j value %></p>
</div>
<% end %>
但是,当调用 _flash.js.erb 时,会附加如下内容:
$("#alerts").append(" \u003Cdiv class=alert-message top warning fade in data-alert=alert\u003E
\u003Ca class=close href=#\u003Ex\u003C/a\u003E
\u003Cp\u003ELooks like you have already linked with Facebook.\u003C/p\u003E
\u003C/div\u003E
");
没有 javascript 转义,响应是这样的:
$("#alerts").append(" <div class="alert-message top warning fade in" data-alert="alert">
<a class="close" href="#">x</a>
<p>Looks like you have already linked with Facebook.</p>
</div>
");
在第一个响应中,转义了太多东西。在第二个响应中,没有任何东西被转义,双引号把事情搞砸了。
在 Rails 3 中以稳健的方式实现上述目标的推荐方法是什么?
【问题讨论】:
-
原来使用 escape_javascript(...) 而不是 会产生预期的结果。奇怪 - 认为他们是同一件事。我想我将不得不解决更多冗长的问题。有没有更简洁的替代方案或使 起作用的方法?
标签: javascript ruby-on-rails view