轨道3-逃逸部分's在javascript响应中生成了html

rails 3 - escaping partial's generated html in javascript response

本文关键字:响应 javascript html 逸部 轨道      更新时间:2023-09-26

我正在尝试做一件简单的事情,其中:

_flash.js.erb:

$("#alerts").append("<%=j render :template => "shared/_flash.html.erb" %>");

注意<%=j…,它转义了javascript。

_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>
");

在第一个响应中,逃逸了太多的东西。在第二个响应中,什么都没逃脱,双引号把事情搞砸了。

在导轨3中,以稳健的方式实现上述目标的推荐方式是什么?

请改用escape_javascript;您正在对其进行JSON转义。

你可以像jjson_escape的别名一样对某些东西进行别名;它只是一个帮手。