2013-07-25 72 views
0

我有一个简单的表单,只有输入字段名称,电子邮件。在我的浏览页面上,我可以填写客户的电子邮件地址并以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

代码似乎是oke,控制器是什么样的?尝试在代码周围放置一个JS try-catch块来追踪错误。远程添加的JS不会显示错误.. –

+0

@Tim你能告诉如何添加JS try-catch块吗?我不知道。谢谢。 – user2206724

+0

添加了块的答案.. –

回答

0

尝试添加try-catch块到您的JS观点:

<% 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 -%> 

如果块不记录,你可能处理一个语法错误。

相关问题