在一个新的 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 =>'约翰'}
那么第一个 wrap_parameters block 做什么呢?它作用于 action_controller .. 为什么?
最佳答案
include_root_in_json
是包装在 Rails 中实例化的 jsonwrap_parameters
是包装从请求中收到的json。
如果您有 wrap_parameters
启用,并且如果您通过 POST 命令将以下 json 发送到 Rails:{name: 'John Smith'}
Rails 会自动将接收到的 JSON 包装成:{"person": {name: 'John Smith'}}
include_root_in_json
,另一方面,是否 json Rails 生成 来自一个对象是否通过to_json
命令。
例如Person.to_json
.如果 include_root_in_json
启用后,您将获得:{"person": {name: 'James Brown'}}
否则,你只会得到{name: 'John Smith'}
关于ruby-on-rails-3 - Rails wrap_parameters vs include_root_in_json,有什么区别?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10774972/