簡體   English   中英

Rails 3-在javascript響應中轉義部分生成的html

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

我正在嘗試做一個簡單的事情,其中​​:

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

如果沒有轉義,則響應如下:

$("#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的別名相同的方式來別名; 它只是一個助手。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM