2011-10-11 77 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