0
我創建了自己的驗證,它是使用json製作的 - 如果用戶電子郵件不是唯一的,則操作會發送回復。這裏是動作:如果自定義jQuery驗證方法正在傳遞,如何返回false?
def checkemail
respond_to do |format|
format.jsonr do
if User.where(email: params[:email]).exists?
render :json => {
:status => :false,
}.to_json
else
render :json => {
:status => :true,
}.to_json
end
end
end
end
第二個變體(不知道如何使用)
def checkemail
render :nothing
if User.where(email: params[:email]).exists?
return false
else
true
end
end
我想寫一個自定義的jQuery的驗證方法,這裏是代碼:
$.validator.addMethod("uniqueness", function(value) {
$.getJSON('http://127.0.0.1:3000/checkemail.jsonr', { email: $('#email').val() }, function(data) {
return data.status
});
}, 'Your email is not unique');
.....
"user[email]":{ //here is no error in name
uniqueness: true
},
也試過
它一直告訴我,電子郵件不是唯一的。
我想,我constanlty在我的自定義驗證方法發送true。
我的錯誤在哪裏?
感謝Barmar,我將編輯的問題,你會告訴我什麼,我再次失蹤,好嗎? – MID
更新的問題。還是一樣。 – MID
問題是'$ .getJSON'是異步的。它立即返回,當AJAX調用返回時調用回調函數。你爲什麼不重寫你的checkemail函數來返回true或false,那麼你可以使用內置的遠程驗證來處理呢? – Barmar