我試圖做一個簡單的事情HTML其中:軌道3 - 逃逸局部的產生在javascript響應
_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>
");
在第一個響應onse,太多東西都逃脫了。在第二個迴應中,沒有任何東西可以逃脫,雙引號使事情變得糟糕。
在rails 3中推薦的方式是以強大的方式實現上述目標?
因此事實證明,使用escape_javascript(...)而不是<%=j .. %>可以產生所需的結果。奇怪 - 認爲他們是同一件事。我想我必須要更加詳細地解決。任何較少的冗長選擇或使<%=j ... %>工作的方法? – deruse