Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/58.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails 如何让Rails在不发送';内容类型:application/json';头球?_Ruby On Rails_Ruby On Rails 3_Json_Rest_Content Negotiation - Fatal编程技术网

Ruby on rails 如何让Rails在不发送';内容类型:application/json';头球?

Ruby on rails 如何让Rails在不发送';内容类型:application/json';头球?,ruby-on-rails,ruby-on-rails-3,json,rest,content-negotiation,Ruby On Rails,Ruby On Rails 3,Json,Rest,Content Negotiation,发送标题“Content-type:application/json”时,Rails会在多个级别上改变行为: 提交的帖子正文被解析为json,而不仅仅是一个字符串参数 config/initializers/wrap_parameters.rb中的wrap_parameters:format=>[:json]在解析所述参数时使用(因此您可以发送带或不带根元素的json) 如果我不能信任(外部)客户机传递正确的头怎么办?换句话说,我想让我的应用程序表现得好像客户端总是传递“Content-ty

发送标题“Content-type:application/json”时,Rails会在多个级别上改变行为:

  • 提交的帖子正文被解析为json,而不仅仅是一个字符串参数
  • config/initializers/wrap_parameters.rb中的wrap_parameters:format=>[:json]在解析所述参数时使用(因此您可以发送带或不带根元素的json)

如果我不能信任(外部)客户机传递正确的头怎么办?换句话说,我想让我的应用程序表现得好像客户端总是传递“Content-type:application/json”头一样,即使客户端实际上没有传递?

您可以使用

request.format = :json
我使用

class ExampleController < ApplicationController

  def always_accept_json
    request.format = :json
    respond_to do |format|
      format.json { raise "HEY" }
      format.html 
    end
  end
end
class ExampleController
您可以在任何ActionController中的任何位置执行此操作,即,如果您希望在顶层使所有请求在应用程序中显示为内容\u type
application/json
只需将其设置为
application\u controller.rb
上的过滤器,即可设置
request.format