10

我想用 json 响应所有格式。

我可以强制渲染格式,以便尽管有标题json,动作也会渲染:show.jsonaccept

  def show
    render formats: :json
  end

如何为控制器的所有操作设置渲染格式?

像这样的东西:

class GalleriesController < ApplicationController
  formats :json
end
4

3 回答 3

9

作为对未来用户的问题和可读性的所有评论的总结,您可以这样做,如此所述:

before_filter :default_format_json

def default_format_json
  request.format = "json"
end
于 2015-03-18T16:11:33.907 回答
0

在您的控制器中:

def my_action
  formats.clear
  formats << :json
end

(我只在 Rails 4.2 和 3.2 中测试过。)

formats返回格式符号数组。它被委托给@_lookup_context,它是 的一个实例ActionView::LookupContext

于 2020-09-25T17:31:46.103 回答
-1

覆盖响应内容类型。在此处阅读有关响应对象的更多信息:http: //guides.rubyonrails.org/action_controller_overview.html#the-response-object

before_filter :force_json

def force_json
  response.content_type = Mime[:json]
end

使用 response_to:

def action
  respond_to do |format|
    format.any(:html, :js, :json) { render json: @object.to_json }
  end
end
于 2016-05-11T21:35:27.227 回答