私はこれを難しい方法で見つけました。アプリケーションコントローラ用のカスタムレスポンダ、または少なくとも個々のレスポンスを作成する必要があります。詳細は、Three reasons to love ActionController::Responderを参照してください。
私のソリューション:
# app/responders/api_responder.rb
class ApiResponder < ActionController::Responder
def to_format
case
when has_errors?
controller.response.status = :unprocessable_entity
when post?
controller.response.status = :created
end
default_render
rescue ActionView::MissingTemplate => e
api_behavior(e)
end
end
# app/controllers/application_controller.rb
class ApplicationController < ActionController::Base
#...
self.responder = ApiResponder
#...
end
また、代わりにrespond_with @foo, responder: ApiResponder
を使用することができます。
私は正しい方向に私を送るためにhaxneyに感謝します。
私はそれが好きです。ありがとう:) – Andrew