2013-07-25 93 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 -%> 

如果塊不記錄,你可能處理一個語法錯誤。

相關問題