Ruby on rails 3 Rails wrap_参数与包含在json中的_root_有什么区别?

Ruby on rails 3 Rails wrap_参数与包含在json中的_root_有什么区别?,ruby-on-rails-3,Ruby On Rails 3,在新的Rails 3.2应用程序中,您可以在config/initializers/wrap_parameters.rb中找到以下行: ActiveSupport.on_load(:action_controller) do wrap_parameters format: [:json] end # Disable root element in JSON by default. ActiveSupport.on_load(:active_record) do self.include

在新的Rails 3.2应用程序中,您可以在config/initializers/wrap_parameters.rb中找到以下行:

ActiveSupport.on_load(:action_controller) do
  wrap_parameters format: [:json]
end

# Disable root element in JSON by default.
ActiveSupport.on_load(:active_record) do
  self.include_root_in_json = false
end
我对第二个代码块的理解是,如果将对象转换为json,它将不包括根节点(即users=>{:name=>'John'},而只是{:name=>'John'}


那么第一个wrap\u参数块做什么呢?它作用于action\u controller.为什么?

在json中包含\u root\u
是将在Rails中实例化的json包装起来

wrap_参数
用于包装从请求接收到的json

如果启用了
wrap_参数
,并且通过POST命令向Rails发送以下json:

{name:'John Smith'}

Rails将自动将接收到的JSON打包为:

{“人”:{name:'John Smith'}}


另一方面,
include_root_in_json
是指json Rails是否通过
to_json
命令包装从对象生成的


e、 g.
Person.to_json
。如果启用了
在_json
中包含根目录,您将获得:

{“人”:{name:'James Brown'}}

否则,你只会


{name:'John Smith'}

它就是这样做的。为什么这个默认值是开着的?如果执行
rails new my app--api,应该是关着的