ruby-on-rails-3 - Rails wrap_parameters vs include_root_in_json,有什么区别?

标签 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_root_in_json = false
end

我对第二个代码块的理解是,如果将对象转换为 json,它将不包含根节点(即 users => {:name => 'John'},而只是 {:name =>'约翰'}

那么第一个 wrap_parameters block 做什么呢?它作用于 action_controller .. 为什么?

最佳答案

include_root_in_json是包装在 Rails 中实例化的 json
wrap_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/

相关文章:

ruby-on-rails - 如何设置回形针样式仅在内容类型为图像时才起作用?

ruby-on-rails - 如何检测我的代码是否在 Rails 3 的控制台中运行?

ruby-on-rails-3 - Rails 3 - 路由到用户配置文件

ruby-on-rails-3 - before_filter 没有正确继承父 Controller ?

ruby-on-rails - 如何在 Ruby 中将以下代码缩减为一行?

ruby-on-rails-3 - 通过 Capistrano 部署 Rails 应用程序时出现 RVM 错误

ruby-on-rails - 为什么我不能在我的 Rails 应用程序中使用 Gmail 正确设置 FROM 名称?

ruby-on-rails - 如何将 collection_check_boxes 与数组一起使用?

ruby-on-rails-3 - 瘦网络服务器 : `start_tcp_server' : no acceptor (RuntimeError) after git branch checkout

ruby-on-rails - 在 Rails 中,无法为 {"adapter"= >"postgresql"创建数据库,