2010-12-01 4 views
0

두 개의 매개 변수를 사용하여 로컬 응용 프로그램에서 호출하는 메서드를 만들어야합니다. 어떻게하면 true 또는 false로 돌아갈 수 있습니까? XML로? 내 방식은 다음과 같습니다.레일 api로 True/False를 반환하는 방법은 무엇입니까?

def check_license 
    app_id = params[:id] 
    app_sn = params[:sn] 

    @license = License.find_by_id(app_id) 

    respond_to do |format| 
    if @license.app_serial == app_sn 
     # should return true here 
    else 
    # should return false here 
    end 
    end 
end 

미리 감사드립니다.

답변

2

먼저 다른 내부 응용 프로그램이이 응용 프로그램을 호출 할 형식을 결정해야합니다. 대중적이고 (그리고 정상적인) 형식은 xml 또는 json입니다.

resp = @license.app_serial == app_sn 
respond_to do |format| 
    format.json { render :json => resp } 
    format.xml do 
     if resp 
     head :ok 
     else 
     render :xml => resp, :status => 403 # that's a failed authentication response 
     end 
    end 
end 
2

난 당신이 바로 사용할 수 있다고 생각 : 여기 방법은 마지막 관계 문장의 결과를 반환 할 수 있도록

def check_license 
    app_id = params[:id] 
    app_sn = params[:sn] 

    @license = License.find_by_id(app_id) 

    @license.app_serial == app_sn 
end 

루비 방법의 마지막 라인은 리턴 값이됩니다 : 참 또는 거짓.

모든 형식에 대해 동일한 응답을 보내려면 respond_to |format|이 필요하지 않습니다. 부울을 반환한다고 가정 할 때 나는 같을 것입니다.

+0

감사 :

그런 다음 컨트롤러에서, 당신은 그 형식의 각 응답을 렌더링 할 필요가있다. 어떻게 URL을 탐색 할 때 "템플릿이 누락되었습니다"오류를 제거합니까? – Tronic

+0

내 대답보기. Rails는 기본적으로 템플릿을 '렌더링'합니다. Rails가 템플릿이 아닌 객체를 직접'렌더링 '하도록 지시해야 할 수도 있습니다. 'render : json => value.to_json'을 사용하십시오. – yfeldblum

0
respond_to do |format| 
    @license.app_serial == app_sn 
    end 

레일스는 마지막 줄 실행 결과를 자동으로 반환합니다.

2
# if you can use json: 
licensed = @license.app_serial == app_sn 
respond_to do |format| 
    format.js { render :json => licensed.to_json } 
end 
관련 문제