2011-12-22 2 views
2

내 웹 응용 프로그램의 API 작업 중입니다. Rails 2 앱이며 REST API는 XML에 응답합니다.XML 응답의 오류 메시지가 반환됩니다.

예를 들어 목록에서 연락처를 수신 거부 할 수없는 경우 오류를 반환해야합니다. 그래서 XML에 오류 메시지가있는 Unprocessable Entity (422)로 응답합니다. 오류가이 같은 메시지와 함께 빈 도착 ActiveResouce 사람이 사용하여 요청을 할 때 반대편에 있다는

respond_to do |format| 
    begin 
    ... 
    format.xml { head :ok } 
    rescue => e 
    format.xml { render :xml => e.to_s, :status => :unprocessable_entity } 
    end 
end 

문제는 다음과 같습니다 :

ActiveResource::ResourceInvalid: Failed. Response code = 422. Response message = . 

이 어떤가요 이것은 실제 코드 XML 구조 또는 태그 응답 메시지를 비워 둘 필요가 없습니다.

감사

+0

오류 format.xml이 호출되는 곳마다 디버거를 검사하면 콜 스택이 다를 수 있습니다. – Reactormonk

답변

1

이 나에게 올바른 보이지 않는이 :

format.xml { render :xml => e.to_s, :status => :unprocessable_entity } 

render :xml, XML 문자열을 전달해야합니다. 이런 식으로 대체하십시오 :

format.xml { render :xml => "<message ='#{e.to_s}'/>", :status => :unprocessable_entity } 
+0

감사합니다. 시도해 보았지만 오류 메시지는 여전히 비어 있습니다. – pedroaxl

0

레일즈 ActiveResource 검증 문서는의 XML 형식으로 오류를 기대하는 상태 :

<errors><error>First cannot be empty</error></errors> 

그 객체의 유효성 검사 오류 해시에서 온 설계 생각 (예 : render :xml => record.errors). 왜 당신이 예외를 잡으려는 것이 좋을지는 확실하지 않지만 서버 오류와 비슷한 훨씬 심각한 문제를 나타내야합니다.