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

Cas*_*der 3 ajax jquery ruby-on-rails-3

我有渲染问题@resultsshow.js.erb.输出如下:show.js.erb模板的输出

show.js.erb

$('#results').empty();
$('#results').html("<ul><%= escape_javascript(render(@results)).html_safe %></ul>");
Run Code Online (Sandbox Code Playgroud)

_result.html.erb

<li>
  <%= link_to(result.title, result.uri) %><br>
  <span class="urls"><%= result.uri %></span>
</li>
Run Code Online (Sandbox Code Playgroud)

使用_result.html.erbshow.html.erb:

<ul>
  <%= render @results %>
</ul>
Run Code Online (Sandbox Code Playgroud)

产生正确的输出.

可疑的罪魁祸首是<%= 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>");
Run Code Online (Sandbox Code Playgroud)

输出保持与图像相同a>,li>以及诸如此类.

编辑2:

HTML渲染show.js.erb: 在此输入图像描述

编辑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>
Run Code Online (Sandbox Code Playgroud)

编辑4:

没有html_safe:

$('#results').empty();
$('#results').html('<ul><%= escape_javascript render(@results) %></ul>');
Run Code Online (Sandbox Code Playgroud)

输出:

输出没有html_safe

</已经通过吃掉escape_javascript.

编辑5:它正在工作!最后!

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

这是Dogbert对.html('')引号和答案的回答.html_safe.

Dog*_*ert 9

请尝试将此用于js.erb

$('#results').html(<%= escape_javascript "<ul>#{render(@results)}</ul>"%>);
Run Code Online (Sandbox Code Playgroud)

  • 没有`.html()的配额,它根本不起作用. (2认同)