私は開発中 (JSON) API の段階にあり、速度などを利用するために継承することにApiController
しました。ActionController::Metal
だから私はそれを機能させるためにたくさんのモジュールを含めました。
最近、レコードが見つからない場合は空の結果で応答することにしました。RailsはすでにメソッドActiveRecord::RecordNotFound
からスローしており、それをキャッチして次のようなものを書くために使用しようとしています:Model#find
rescue_from
module Api::V1
class ApiController < ActionController::Metal
# bunch of included modules
include ActiveSupport::Rescuable
respond_to :json
rescue_from ActiveRecord::RecordNotFound do
binding.pry
respond_to do |format|
format.any { head :not_found }
end
end
end
end
私の単純なアクションを呼び出した後
def show
@post = Post.find(params[:id])
end
そして実行は決して到達しませんrescue_from
。それはスローです:
ActiveRecord::RecordNotFound (Couldn't find Post with id=1
私のログファイルに。
私はそれを試しており、本番モードで使用しています。サーバーは 404 で応答しますが、応答本文はJSON要求の標準のHTMLエラー ページです。
ActionController::Metal
継承を からに変更するとうまくいきますActionController::Base
。
respond_with
通話がないことに気付くかもしれません。これは、テンプレート システムとしてRABLを使用しているためです。
rescue_from
質問は次のとおりです。HTML を使用したり、応答から HTML を削除しMetal
たりする可能性はありますか?