我想用json回复所有格式。
我可以强制将渲染格式设置为json
,这样无论show.json
标题如何,操作都会呈现accept
:
def show
render formats: :json
end
如何为控制器的所有操作设置渲染格式?
这样的事情:
class GalleriesController < ApplicationController
formats :json
end
答案 0 :(得分:6)
作为对未来用户的问题和可读性的所有评论的摘要,您可以如上所述here:
before_filter :default_format_json
def default_format_json
request.format = "json"
end
答案 1 :(得分:0)
在您的控制器中:
def my_action
formats.clear
formats << :json
end
(我只在Rails 4.2和3.2中对此进行了测试。)
formats
返回一个格式符号数组。它被委托给@_lookup_context
的实例ActionView::LookupContext
。
答案 2 :(得分:-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
使用respond_to:
def action
respond_to do |format|
format.any(:html, :js, :json) { render json: @object.to_json }
end
end