我从@results
渲染show.js.erb
时出现问题。输出如下:
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(render@results)) %>
但没有运气。
应用程序是使用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:
show.js.erb
呈现的HTML:
编辑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
。
答案 0 :(得分:9)
请尝试将此用于js.erb
$('#results').html(<%= escape_javascript "<ul>#{render(@results)}</ul>"%>);
答案 1 :(得分:3)
这里有两个想法:
失踪;在empty()之后
$('#results').empty();
我在使用短手渲染方面遇到了麻烦,但长版本始终有效。
$('#results').html("<ul><%= escape_javascript(render( :partial => "results/result", :collection => @results)).html_safe %></ul>");
在.html('')
答案 2 :(得分:1)
https://github.com/rails/rails/issues/1553 试试用Rails 3.0.7?