2014-03-04 7 views
0

나는 내 컨트롤러에 다음과 같은 조치가 다음 경로와찾기 사용자를 찾을 수 없습니다

def find_by_email(useremail) 
    @kid = Kid.find_by_email(params[:kid_email]).first 
    if [email protected]? 
     respond_to do |format| 
      format.json { render json: @kid, success: true, error: false } 
     end 
    end 
end 

:

get '/admin/kid/:kid_email'     => "admin/kid#find_by_email" 

내가이 내 시야에 아약스이다 :

$("#kid_email").blur(function() { 
    var value = $(this).val(); 
    var url = "/admin/kid/";  
    var data = {"email" : value}; 
    var dataType = "json"; 

    if (value != ""){ 
    $.ajax({ 
     type: "GET", 
     url: url, 
     data: data, 
     success: function(response){ 
     alert("EXISTE"); 
     }, 
     error: function(response){ 
     alert("NOOOOO"); 
     }, 
     dataType: dataType 
    }); 
    } 
}); 

하지만 항상 404가 발견되지는 않지만 데이터베이스에 테스트 사용자가 있습니다. 다음은 콘솔 출력입니다.

Started GET "/admin/kid/?email=testuser%40gmail.com" for 127.0.0.1 at 2014-03-04 12:51:50 +0100 
Processing by ErrorsController#routing as JSON 
    Parameters: {"email"=>"[email protected]", "a"=>"admin/kid"} 
MONGODB (0.7ms) development['kids'].find({:_id=>BSON::ObjectId('514055c285216d2a950003af')}).limit(-1).sort([[:_id, :asc]]) 
MONGODB (25.5ms) development['$cmd'].find({"count"=>"kid_weekly_connections", "query"=>{"kid_id"=>BSON::ObjectId('514055c285216d2a950003af')}, "fields"=>nil}).limit(-1) 
MONGODB (28.4ms) development['kid_weekly_connections'].find({"kid_id"=>BSON::ObjectId('514055c285216d2a950003af')}).limit(-1).sort([[:start_at, :desc]]) 
DEPRECATION WARNING: Passing the format in the template name is deprecated. Please pass render with :formats => [:html] instead. (called from realtime at /Users/jean/.rvm/rubies/ruby-1.9.3-p484/lib/ruby/1.9.1/benchmark.rb:295) 
    Rendered public/404.html (0.1ms) 
Completed 404 Not Found in 68ms (Views: 8.5ms) 

모든 아이디어 ???

미리 도움을 주셔서 감사합니다.

+1

보너스 팁 : 나는 'if'테스트에서 많은 네거티브를 피하려고 노력합니다. 따라서 if! @ kid.nil? 대신에 if @ kid.present?를 할 수 있습니다. –

답변

0

경로 패턴이 URL의 이메일 주소를 찾고 있습니다. 이런 식으로 뭔가가 :

/admin/kid/[email protected] 

그래서 자바 스크립트는이처럼 시작해야 :

$("#kid_email").blur(function() { 
    var url = "/admin/kid/" + $(this).val(); 
    ... 
}); 

그런 다음 당신은 정말 /이 그 중 하나 data 개체를 전달 설정할 필요가 없습니다.

+1

그건 내 생각에 끔찍한 URL이야. 나는 항상 URL 경로 자체가 아니라 매개 변수에 항상 이와 같은 검색어 (검색어)를 넣을 것입니다. @ 크리스 당신의 비판이 아닙니다 :) –

관련 문제