ユーザー名の一意性を onBlur jQuery イベントで確認したい。次のようにチェックする必要があるフィールドを見つけるために、特別な属性を追加しました。
<input data-validate="/checkname" id="user_email" name="user[email]" size="30" type="email" value="">
そしてRegistrationsControllerにアクションを追加しました(deviseを使用):
def checkname
if User.where('user = ?', params[:user]).count == 0
render :nothing => true, :status => 200
else
render :nothing => true, :status => 409
end
return
end
...routes...
checkname GET /checkname(.:format) devise/registrations#checkname
jQuery から呼び出したいのですが、パラメーターを送信して、checkname アクションに依存する css クラスを追加します。
$('[data-validate]').blur(function() {
$this = $(this);
$.get($this.data('validate'), {
email: $this.val()
}).success(function() {
$this.addClass('valid');
}).error(function() {
$this.addClass('error');
});
});
編集:リクエストは呼び出しているようですが、呼び出しが間違っている可能性があります。Firebug ネットワーク タブから:
http://127.0.0.1:3000/checkname?email=new%40mail.com 404 not found
new@mail.com を電子メール フィールドに入力する場合。
このコードは常にエラークラスをフィールドに追加しているため、いくつかのエラーがあります - 誰かがどこを提案できますか?