强制所有操作的渲染格式

时间:2013-11-07 10:29:06

标签: ruby-on-rails json ruby-on-rails-4

我想用json回复所有格式。

我可以强制将渲染格式设置为json,这样无论show.json标题如何,操作都会呈现accept

  def show
    render formats: :json
  end

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

这样的事情:

class GalleriesController < ApplicationController
  formats :json
end

3 个答案:

答案 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