在AJAX中呈现的rails 3表单将html与文本字段值混合在一起

2022-04-04 00:00:00 ruby-on-rails render ajax

我正在通过AJAX呈现一个表单:

$('#details').html("<%== escape_javascript(render ('form')) %>");

感谢d11wtq! 现在的问题是,这个表单是用一些html作为文本呈现的!尽管文本字段和文本区域中的所有值都是正确的。

这是表格

<%= form_for @note, :remote => true, :html => { :'data-type' => 'html', :id => 'new-note-form' }  do |f| %>
 <% if @note.errors.any? %>
 <div id="error_explanation">
  <h2><%= pluralize(@note.errors.count, "error") %> prohibited this note from being saved:</h2>
  <ul>
  <% @note.errors.full_messages.each do |msg| %>
    <li><%= msg %></li>
  <% end %>
  </ul>
</div>
<% end %>
<%= f.hidden_field :wine_id, :value=>@note.wine.id %>
<%= @note.wine.name %>
<div class="field">
 <%= f.label :rating %> <br />
 <%= f.text_field :rating %> </div>
<div class="field">
 <%= f.label :text %> <br />
 <%= f.text_area :text,:size => "60x12" %>
</div>
<div class="actions">
<%= f.submit %>
 </div>
<% end %>

因此,当呈现该表单时,在块<;%=@note.wine.name%>之后是Red Wine div>打印输出。文本字段中包含值和一些html。文本区也是如此。插入的html代码总是一些,所以它不是随机的。 感谢您的时间和帮助:)


解决方案

$('#details').html("<%= raw escape_javascript(render ('form')) %>")
确保传递RAW,因为一些较新版本的Rails目前在转义Java脚本和html时遇到了问题。还要确保您的选择器已就位。并且在您的控制器中有一个对js Formart的响应,在您的视图中有一个js.erb模板。

相关文章