rails 3 - 在javascript响应中转义部分生成的html
Posted
技术标签:
【中文标题】rails 3 - 在javascript响应中转义部分生成的html【英文标题】:rails 3 - escaping partial's generated html in javascript response 【发布时间】: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(...) 而不是 会产生预期的结果。奇怪 - 认为他们是同一件事。我想我将不得不解决更多冗长的问题。有没有更简洁的替代方案或使 起作用的方法? 【参考方案1】:请改用escape_javascript
;你是JSON-escaping它。
你可以用同样的方式给某个东西起别名,j
是json_escape
的别名;它只是一个帮手。
【讨论】:
有人需要修复这些文档然后 --api.rubyonrails.org/classes/ActionView/Helpers/…以上是关于rails 3 - 在javascript响应中转义部分生成的html的主要内容,如果未能解决你的问题,请参考以下文章