我有一个简单的表单,只有输入字段名称,电子邮件。在我的视图页面上,我有一个表格,可以输入客户的电子邮件并以ajax方式保存。这是我的观点页面:
_form.html.erb
<%= form_for @customer, :remote=>true do |f| %>
<div id="errors"></div>
<%= f.text_field :email, :maxlength => 30, :placeholder => "Email", :id => "ecustomer" %>
<%= f.submit "Save", :class => "btn btn-primary btn-large" %>
<% end %>
这是我的create.js.erb
<% if @customer.errors.any? -%>
$('<%= escape_javascript(render :partial => "error", :locals => {:target => @customer })%>').appendTo('#errors')
<% else -%>
$("<%= escape_javascript(render @customer) %>").prependTo("table.table.customers tbody");
<% end -%>
我已在电子邮件中验证了状态和唯一性。并且为了显示验证错误,我有部分,_error.erb:
<div class="alert alert-error">
<h5><%= pluralize(@customer.errors.count, "error") %> prohibited this user from being saved:</h5>
<ul>
<% @customer.errors.full_messages.each do |msg| %>
<li><%= msg %></li>
<% end %>
</ul>
</div>
但我的验证错误仍然不可见。我不知道这里出了什么问题。任何人都可以帮助我如何使它工作?
谢谢。
答案 0 :(得分:0)
尝试在JS视图中添加Try-Catch块:
<% if @customer.errors.any? -%>
try {
$('<%= j(render :partial => "error", :locals => {:target => @customer })%>').appendTo('#errors');
} catch( e ) {
console.log( e );
}
<% else -%>
try {
$("<%= j(render @customer) %>").prependTo("table.table.customers tbody");
} catch( e ) {
console.log( e );
}
<% end -%>
如果该块没有记录,您可能正在处理语法错误。