0
我試圖打電話與阿賈克斯其檢查重複的電子郵件的方法使用Ajax的工作。下面是我的代碼不能得到重複檢查在軌
#users_controller.rb
def check_email
email = User.find_by(email: params[:email]) #record exists
if email
#return true
render :json => { status: "true" }
else
return false
end
end
#view code
<input type="email" name="email" id="s_email" placeholder="Email"/>
<span id="duplicate_email"></span>
#jquery
$('#s_email').on('change keyup paste', function() {
var email = $('#s_email').val();
$.ajax({
url: '/users/check_email',
data: {"email": email},
type: 'GET',
dataType: 'json',
success: function(status){
if (status == 'true') {
$('#duplicate_email').text("Email Already Exists! Try Different Email");
}
}
});
});
#server log
Started GET "https://stackoverflow.com/users/check_email?email=pavan%40xyz.in" for 127.0.0.1 at 2016-11-28 11:45:02 +0530
Processing by UsersController#check_email as JSON
Parameters: {"email"=>"[email protected]"}
Redirected to http://localhost:3000/
Filter chain halted as :login_check rendered or redirected
Completed 302 Found in 0ms
問題: 雖然記錄存在,誤差不會顯示出來。
我在做什麼錯了?
'過濾器鏈暫停爲:login_check呈現或重定向'你看到那個錯誤?另外'staus =='true''應該是'staus.status =='true'' –
我認爲問題出現在'success:function(staus){',** status **指的是通過rails返回的整個數據即'{status:「true」}'所以在你的代碼中if'(staus =='true'){'評估爲false。你需要的是如果(staus.status =='true'){'或重命名'功能(staus)'到'function(data)'並用作'data.status' – Sajan
@Зелёный好的指針!我有點誤解了這個錯誤。你是對的。我必須將'skip_before_filter:login_check'添加到該控制器,並且還需要將status =='true''更改爲'status.status =='true''。現在工作正常。謝謝! – Pavan