2016-11-28 20 views
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 

問題: 雖然記錄存在,誤差不會顯示出來。

我在做什麼錯了?

+0

'過濾器鏈暫停爲:login_check呈現或重定向'你看到那個錯誤?另外'staus =='true''應該是'staus.status =='true'' –

+0

我認爲問題出現在'success:function(staus){',** status **指的是通過rails返回的整個數據即'{status:「true」}'所以在你的代碼中if'(staus =='true'){'評估爲false。你需要的是如果(staus.status =='true'){'或重命名'功能(staus)'到'function(data)'並用作'data.status' – Sajan

+0

@Зелёный好的指針!我有點誤解了這個錯誤。你是對的。我必須將'skip_before_filter:login_check'添加到該控制器,並且還需要將status =='true''更改爲'status.status =='true''。現在工作正常。謝謝! – Pavan

回答

1

問題出在錯誤Filter chain halted as :login_check rendered or redirected看起來像一個身份驗證錯誤。根據您的操作代碼,staus == 'true'應該是staus.status == 'true'