我從show.js.erb
中渲染@results
時遇到問題。輸出看起來像:從js.erb模板中渲染部分內容時會生成帶有html標籤殘餘部分的內容
show.js.erb
$('#results').empty();
$('#results').html("<ul><%= escape_javascript(render(@results)).html_safe %></ul>");
_result.html.erb
<li>
<%= link_to(result.title, result.uri) %><br>
<span class="urls"><%= result.uri %></span>
</li>
使用_result.html.erb
在show.html.erb
:
<ul>
<%= render @results %>
</ul>
會產生正確的輸出。
疑似罪魁禍首是<%= escape_javascript(render(@results)).html_safe %>
。 我試過<%= raw(escape_javascript([email protected])) %>
但沒有運氣。 應用程序使用Rails 3.0.8創建。
編輯1:
較長版本show.js.erb的:
$('#results').empty();
$('#results').html("<ul><%= escape_javascript(render(:partial => "results/result", :collection => @results)).html_safe %></ul>");
輸出保持不變,與a>
,li>
和諸如此類的東西在圖像上。
編輯2:
HTML由show.js.erb
呈現:
編輯3:
<a href="http://jasonseifer.com/2010/04/06/rake-tutorial">Rake Tutorial | Jason Seifera><br> <span class="urls">http://jasonseifer.com/2010/04/06/rake-tutorialspan>li></span></a>
編輯4:
無html_safe
:
$('#results').empty();
$('#results').html('<ul><%= escape_javascript render(@results) %></ul>');
輸出:
的</
已經由escape_javascript
吃掉。
編輯5:它工作!最後!
$('#results').html('<%= escape_javascript("<ul>#{render(@results)}</ul>").html_safe %>');
這是Dogbert的答案與.html('')
報價和.html_safe
。
你可以發佈原始的html輸出嗎? Firebug傾向於清理無效標籤。 – Dogbert 2011-06-11 21:45:27
我已經用html輸出更新了問題(編輯3)。 – 2011-06-11 21:58:34