2011-12-22 20 views
2

私のWebアプリケーションのAPIを作成しています。これはRails 2アプリであり、REST APIはXMLに対応しています。XML応答のエラーメッセージを返します

たとえば、連絡先をリストから退会できなかった場合は、エラーを返す必要があります。だから私は、XMLにエラーメッセージとともに、Unprocessable Entity(422)で応答します。

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

問題は、誰かがActiveResouceエラーを使用して購買を行う際に、他の側にいることである。このように、空のメッセージで到着:

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

RailsのActiveResource検証文書は、それがのXMLフォーマットでエラーを期待していることを述べて:

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

私は、オブジェクトの検証エラーのハッシュから来るように設計されたと思います(例えば、render :xml => record.errors)。なぜあなたは例外をキャッチしたいのですが、サーバエラーのようなもっと深刻な問題があるはずです。

関連する問題