从js.erb模板中渲染部分内容时会生成带有html标签残余部分的内容

问题描述:

我从show.js.erb中渲染@results时遇到问题。输出看起来像:output from show.js.erb template从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.erbshow.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呈现: enter image description here

编辑3:

<a href="http://jasonseifer.com/2010/04/06/rake-tutorial">Rake Tutorial | Jason Seifera&gt;<br> <span class="urls">http://jasonseifer.com/2010/04/06/rake-tutorialspan&gt;li&gt;</span></a> 

编辑4:

html_safe

$('#results').empty(); 
$('#results').html('<ul><%= escape_javascript render(@results) %></ul>'); 

输出:

output without html_safe

</已经由escape_javascript吃掉。

编辑5:它工作!最后!

$('#results').html('<%= escape_javascript("<ul>#{render(@results)}</ul>").html_safe %>'); 

这是Dogbert的答案与.html('')报价和.html_safe

+0

你可以发布原始的html输出吗? Firebug倾向于清理无效标签。 – Dogbert 2011-06-11 21:45:27

+0

我已经用html输出更新了问题(编辑3)。 – 2011-06-11 21:58:34

请尝试使用此为您js.erb

$('#results').html(<%= escape_javascript "<ul>#{render(@results)}</ul>"%>); 
+2

没有'.html()'的配额,它根本不工作。 – 2011-06-12 03:48:19

+1

非常感谢您的回答!我添加了'.html('')'配额。当我在查看原始html输出时,我注意到它是正确的!我在最后加了'.html_safe',一切都很好。谢谢! – 2011-06-12 03:55:35

两个想法在这里:

  1. 缺少一个;后空()

    $('#results').empty(); 
    
  2. 我一直使用短手渲染的问题,但长版本始终工作。

    $('#results').html("<ul><%= escape_javascript(render(:partial => "results/result", :collection => @results)).html_safe %></ul>"); 
    

下一页尝试

更改双引号单引号的.html('')

+0

感谢您的回答。 ';'在那里,但是我在输入问题时失去了它。我已经尝试过长版本,但没有'_'(它给出缺失的部分错误),可悲的输出是一样的简短版本。 – 2011-06-11 20:43:24

+0

我不认为你已经说过输出是什么。你可以吗?我可能会帮忙。 – natedavisolds 2011-06-11 21:04:37

+0

像在图像上。链接正在工作。但链接的标题末尾附有'a>'。在包含uri'span> li>的span中附加。在'show.html.erb'中使用的相同的部分产生正确的结果。 – 2011-06-11 21:12:59

https://github.com/rails/rails/issues/1553 试试这个与Rails 3.0.7?

+0

是的,就是这样。 ''缺失。 Dogbert为此解决了问题。 – 2011-06-12 03:59:12