2017-02-22 3 views
1

私は不正な例外を救済しており、このレスキューブロック内にアラートを表示します。これは私のアプリケーションコントローラにあるので、このレスキューは複数のフォーマットでヒットする可能性があるので、respond_toブロックが必要です。レスキューを使用してrescue_fromの例外アラートをレンダーする

これをrespond_toなしで実行すると、すべて正常に動作します。ステータスは401に設定されており、適切な例外メッセージが点滅しています。

render :json => exception.message, :status => 401 

ただし、私がrepond_toブロック内で同じことを行うと、何も機能しません。ステータスが設定されず、例外メッセージがレンダリングされません。

respond_to do |format| 
    format.json { render :json => exception.message, :status => 401 } 
end 

ここで問題が発生する可能性はありますか?私は数多くの例を見てきましたが、これはうまくいくはずですが、ステータスとメッセージは無視されるようです。

+0

第1の変形では、フォーマットが何であるかにかかわらず、コントローラのアクションに対するすべての要求に対する応答をレンダリングします。第2の変形例では、json形式の要求に対してのみ応答を定義しています。 '/ example/new.json'です。このような '/ example/new'のような動作を要求すると、ステータスとメッセージを定義していないhtml形式にフォールバックします。詳細については、この質問と回答を参照してください:http://stackoverflow.com/questions/9492362/rails-how-does-the-respond-to-block-work –

答えて

0

あなたは

...あなたがHTMLのリクエストに答えている...だからあなたはブラウザ上でそれをレンダリングする必要がある場合、あなたはすべてを自分でフォーマット処理する必要が

render :json => exception.message, :status => 401 

でJSONをレンダリングしているほかに

respond_to do |format| 
    format.json { ... } 
    format.html { ... } 
end 
+0

私は意味...あなたが求めている方法、私は推測するあなたのブラウザー上でテストするのに問題があります。最後に '.json'形式のエンドポイントに当たっていなければ...'/controller/action.json'のように – cefigueiredo

関連する問題