2011-10-11 80 views
0

我創建了一個應用程序,使用Jquery遠程執行所有CRUD操作。在我看來,我有一個index.html.erb包含表單和一個表格,顯示記錄。我的問題是,當我提交錯誤的表單時,我沒有收到任何反饋。我相信我的問題在於我的create.js.coffee文件。我使用authlogic來處理窗體某些部分的驗證。Rails 3.1提交ajax表單時顯示驗證錯誤

在create.js.coffee

$('<%= escape_javascript(render(:partial => @user))%>') 
    .appendTo('#user_table') 
    .hide() 
    .fadeIn(200) 

$('#new_user')[0].reset() 

$('#users_count').html '<%= users_count %>' 

在index.html.erb

<% title "Create New User for XX" %> 
<div id="paginate"><%= paginate @users, :remote => true %></div> 
<div id="users_count"><strong><%= users_count %></strong></div> 
<div id="users"> 
    <table id="user_table"> 
     <tr> 
      <th>Id</th> 
      <th>First</th> 
      <th>Last</th> 
      <th>Email</th> 
      <th>Last Login</th> 
      <th>Created At</th> 
      <th>Del</th> 
      <th>Edit</th> 
     </tr> 
<%=render @users %> 
</table> 
</div> 

<h3> Add new user below </h3> 
<%= render :partial => 'form' %> 

在_form.html.erb

<%= form_for User.new, :remote => true do |f| %> 
    <%= f.error_messages %> 
    <p> 
    <%= f.label :fname %><br /> 
    <%= f.text_field :fname %> 
    </p> 
    <p> 
    <%= f.label :lname %><br /> 
    <%= f.text_field :lname %> 
    </p> 

    <p> 
    <%= f.label :email %><br /> 
    <%= f.text_field :email %> 
    </p> 

    <p> 
    <%= f.label :admin %><br /> 
    <%= f.check_box :admin %> 
    </p> 
    <p> 
    <%= f.label :password %><br /> 
    <%= f.password_field :password %> 
    </p> 

    <p> 
    <%= f.label :password_confirmation %><br /> 
    <%= f.password_field :password_confirmation %> 
    </p> 
    <p><%= f.submit %></p> 
<% end %> 

回答

5

正是這樣簡單。在視圖中創建局部的錯誤和錯誤的div和....在create.js.coffee

<% if @user.errors.any? %> 
$('<%= escape_javascript(render :partial => "errors", :locals => {:target => @user })%>') 
    .appendTo('#errors') 
<% else %> 
$('<%= escape_javascript(render(:partial => @user))%>') 
    .appendTo('#user_table') 
    .hide() 
    .fadeIn(200) 

$('#new_user')[0].reset() 

$('#users_count').html '<%= users_count %>' 
<% end %> 
$('#error_clo