Вы можете использовать некоторый JavaScript (написанный на jQuery) для проверки AJAX:
$(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 на URL-адрес, указанный в атрибуте data-validate
, и передаст параметр user
со значением ввода.
Затем измените свое представление, добавив атрибут data-validate
с проверочным URL:
<%= 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