204ステータスは、内容なし。
リクエストを受理したが、返すべきレスポンスエンティティが存在しない場合に返される。
Rails3ではなぜかPUTメソッド(GET / POST以外)だと204ステータスに強制されてしまい、コンテンツを返せない。
本当は200ステータスでコンテンツも返したい。
200ステータスでコンテンツを返す方法
ActionController::Responder.api_behavior を書き換える。
initializes辺りに以下ソースを入れておく。
module ActionController class Responder def api_behavior(error) raise error unless resourceful? if get? display resource elsif post? display resource, :status => :created, :location => api_location elsif resource.present? display resource else head :no_content end end end end
GET / POST以外のメソッドの場合に204を返すようにしている処理は、
actionpack-3.2.13/lib/action_controller/metal/responder.rb
で定義されていた。