Railsコントローラ(それらすべて、実際にはAPIです)を使用して、常にJSONをレンダリングしたいと思います。
Railsで「ルートが見つかりません」を返したり、HTMLテンプレートを見つけられなかったり、406を返したりしたくない。自動で常にJSONをレンダリングしたいRABLまたはJBuilderビュー。
これは可能ですか?関連する質問には、前述の欠点がある回答があるようです。
コントローラにbefore_filter
を追加して、リクエストの形式をjson
に設定できます。
# app/controllers/foos_controller.rb
before_action :set_default_response_format
protected
def set_default_response_format
request.format = :json
end
これにより、すべての応答形式がjson
に設定されます。他の形式を許可する場合は、request.format
を設定するときにformat
パラメータの存在を確認できます。たとえば、次のようにします。
def set_default_response_format
request.format = :json unless params[:format]
end
format.any
を使用できます。
def action
respond_to do |format|
format.any { render json: your_json, content_type: 'application/json' }
end
end
それはただ:
render formats: :json
同様の問題がありましたが、「。js」拡張子が付きました。解決するために、ビューで次のことを行いました:<%= params.except!(:format) %> <%= will_paginate @posts %>