javascript - Rails 3 - 在 JavaScript 响应中转义部分生成的 html

标签 javascript ruby-on-rails view

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

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

在第一个响应中,转义了太多内容。在第二个响应中,没有任何内容被转义,双引号把事情搞乱了。

Rails 3 中推荐的以稳健方式实现上述目标的方法是什么?

最佳答案

改用escape_javascript;你是JSON-escaping它。

您可以为某些内容添加别名,就像 jjson_escape 的别名一样;它只是一个帮助者。

关于javascript - Rails 3 - 在 JavaScript 响应中转义部分生成的 html,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8957548/

相关文章:

javascript - 如何将字符串参数传递给 JavaScript 函数中的 Java 方法

javascript - Nodejs getTime() 只显示执行时间

ruby-on-rails - 为什么 Rails 拒绝使用我的模型(基于 SQL View )?

ruby-on-rails - 如何将带有子域约束的​​根路径移植到 Rails 4?

android - Android Market 应用程序中的水平滚动称为什么?

javascript - 在 Jest 中使用 toBeCalledWith() 测试参数

javascript - Typescript/React - 从 this.state 解构会抛出错误

ruby-on-rails - 使用 ruby​​ 2.5.3 在特定站点上发出获取请求时出现超时错误

android - 充气机找不到构造函数

iphone - 在标签栏 View 之前查看