web-dev-qa-db-ja.com

Rails 4-要求されたフォーマットに関係なくJSONをレンダリングする方法?

Railsコントローラ(それらすべて、実際にはAPIです)を使用して、常にJSONをレンダリングしたいと思います。

Railsで「ルートが見つかりません」を返したり、HTMLテンプレートを見つけられなかったり、406を返したりしたくない。自動で常にJSONをレンダリングしたいRABLまたはJBuilderビュー。

これは可能ですか?関連する質問には、前述の欠点がある回答があるようです。

22
Zach

コントローラに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
36
vee

format.anyを使用できます。

def action
  respond_to do |format|
    format.any { render json: your_json, content_type: 'application/json' }
  end
end
13
Peleg

それはただ:

render formats: :json
2
hlcs

同様の問題がありましたが、「。js」拡張子が付きました。解決するために、ビューで次のことを行いました:<%= params.except!(:format) %> <%= will_paginate @posts %>

0
ruslan