你可以使用一些JavaScript(这个用jQuery写的)对AJAX cheking:
$(function() {
$('[data-validate]').blur(function() {
$this = $(this);
$.get($this.data('validate'), {
user: $this.val()
}).success(function() {
$this.removeClass('field_with_errors');
}).error(function() {
$this.addClass('field_with_errors');
});
});
});
这个JavaScript将寻找属性data-validate
任何领域。然后它将调用onBlur
事件处理程序(焦点在JavaScript世界中丢失)。模糊处理器将发送AJAX请求到data-validate
属性中指定的URL,并通过参数user
输入值。
下一页修改您的观点与验证URL添加属性data-validate
:
<%= text_field_tag(:user, :'data-validate' => '/users/checkname') %>
下一页添加路线:
resources :users do
collection do
get 'checkname'
end
end
而最后一步创建您的验证:
class UsersController < ApplicationController
def checkname
if User.where('user = ?', params[:user]).count == 0
render :nothing => true, :status => 200
else
render :nothing => true, :status => 409
end
return
end
#... other controller stuff
end
没有Ruby的AJAX请求,你怎么会知道用户名是否在数据库? – rubyprince 2011-04-28 08:42:00