我有一个多模型表单提交,它将所有模型错误附加到一个名为@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 %>
答案 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 %>