2009-05-07 4 views
0

を返しません、ここで私は、ユーザーactiveresourceモデルを持っている短縮バージョンActiveResourceエラーレスポンスヘッダが、私は前にこれに似た何かを尋ね、決して答えを得た身体

です。サービス上のエラーがあった場合(すなわち。activation_codeが一致しませんでした)

response = User.find(id).put(:activate, :activation_code => activation_code) 

私はactiveresourceと

render :xml => @user.errors, :status => :unprocessable_entity 

だから、明らかに任意のエラー応答を返すサービスに私のクライアント上での簡単な電話をかけます返信で処理する必要があります

rescue ActiveResource::ResourceInvalid 

最初の呼び出しの応答が設定されていない点を除いて、これはすべて問題ありません。私はその応答のボディが全くないので、@ user.errorsは返されません。適切なオブジェクトを取得するためには何が必要ですか?どんな「成功」レスポンスコードでも、レスポンス変数の値は正常に設定されます。しかし、常に200を返すのは間違いのようです。

答えて

1

だから私は救助ブロック

rescue ActiveResource::ResourceInvalid => e 

にeが読み込まれます、そこに少し間違っていました。サービスは

render :xml => @user.errors, :unprocessable_entity 

を返すので、e.response.bodyにはxmlというエラーが含まれています。私は私のクライアント側でこう言います。

user.errors.from_xml(e.response.body) 

このユーザーには、適切なエラーが表示されます。

関連する問題