私は不正な例外を救済しており、このレスキューブロック内にアラートを表示します。これは私のアプリケーションコントローラにあるので、このレスキューは複数のフォーマットでヒットする可能性があるので、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
ここで問題が発生する可能性はありますか?私は数多くの例を見てきましたが、これはうまくいくはずですが、ステータスとメッセージは無視されるようです。
第1の変形では、フォーマットが何であるかにかかわらず、コントローラのアクションに対するすべての要求に対する応答をレンダリングします。第2の変形例では、json形式の要求に対してのみ応答を定義しています。 '/ example/new.json'です。このような '/ example/new'のような動作を要求すると、ステータスとメッセージを定義していないhtml形式にフォールバックします。詳細については、この質問と回答を参照してください:http://stackoverflow.com/questions/9492362/rails-how-does-the-respond-to-block-work –