通过AJAX提交表单时不呈现错误

时间:2011-07-28 11:22:49

标签: jquery ruby-on-rails ruby ajax

我有一个多模型表单提交,它将所有模型错误附加到一个名为@errors的哈希中。使用普通HTML帖子提交时,错误会在我的视图中正确呈现:

new.html.erb

<div id="error_explanation">
<% if @errors && @errors.any? %>
   <% @errors.full_messages.each do |msg| %>
   <h3><%= msg %></h3>
   <% end %>
<% end %>
</div>

但是,当使用AJAX提交任何渲染时,我可以在输出到日志时验证散列是否包含值。

create.js.erb

<% if @errors && @errors.any? %>
   <% @errors.full_messages.each do |msg| %><%= logger.info msg %><% end %> // Works!!
   $('#error_explanation').html('<% @errors.full_messages.each do |msg| %><%= msg %><% end %>'); // Doesn't Work
<% end %>

2 个答案:

答案 0 :(得分:2)

你应该逃避文字:

$('#error_explanation').html('<%= escape_javascript @errors.full_messages.join("<br/>") %>');

如果仍有错误,请提供结果js。

答案 1 :(得分:1)

我认为<% @errors.full_messages.each do |msg| %><%= msg %><% end %>应该返回一个数组。

您可以使用类似

的内容
<% @errors.full_messages.each do |msg| %>
   $('#error_explanation').append(msg);
<% end %>