【问题标题】:Rails 3.1 display validation errors when submitting ajax formRails 3.1 在提交 ajax 表单时显示验证错误
【发布时间】:2011-10-11 16:00:55
【问题描述】:

我创建了一个使用 Jquery 远程执行所有 CRUD 操作的应用程序。在我看来,我有一个包含表单的 index.html.erb 和一个显示记录的表格。我的问题是当我提交有错误的表单时,我没有收到任何反馈。我相信我的问题在于我的 create.js.coffee 文件。我正在使用 authlogic 来处理表单某些部分的验证。

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

【问题讨论】:

    标签: jquery ruby-on-rails-3.1 crud


    【解决方案1】:

    就这么简单。在视图中创建一个错误部分和一个错误 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
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2016-05-20
      • 2014-04-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多