Rails を JSON のみの API サーバーとして使用していますが、コントローラーに例外が発生した場合、たとえば ID が 1 のレコードが存在しないときに削除しようとすると、Rails は応答する JSON で応答しません。 HTML では、開発中の場合はトレース、または運用中の一般的な「問題が発生しました」ページのいずれかです。
現在、すべてをレスキューでラップし、JSON レスポンスを手動で吐き出しています...
class AmazonAccountsController < ApplicationController
respond_to :json, :xml
def destroy
# Handle bad API calls.
begin
@account = AmazonAccount.find(params[:id])
@account.destroy
# unrelated code...
rescue
render :json => {:errors => {:bad => "ID doesn't exist."}}.to_json
end
end
end
しかし、これはこれを処理する理想的な方法とは思えません。
これは Rails 3 にあります。