ActiveRecord::Base.include_root_in_json = true
似乎没有在rails 3.10.rc4中工作,我在文档中看不到它。
由于root元素现在默认关闭,我们如何重新启用它?
rails 3.1中的 @comments.to_json
现在看起来像
[
{
comment: "Fun street park.",
created_at: 2011-06-29T02:28:29Z,
}
]
在以前的版本中,它有根节点,我需要回来。
[
{
comment: {
comment: "Fun street park.",
created_at: 2011-06-29T02:28:29Z
}
}
]
答案 0 :(得分:15)
事实证明,Rails 3.1只是为你创建了这个json配置文件。我不知道这个文件在这里所以我的初始化程序中的文件被忽略了。
在Ryan上面的回答确实覆盖了这个设置。
配置/初始化/ wrap_parameters.rb
# Be sure to restart your server when you modify this file.
#
# This file contains settings for ActionController::ParamsWrapper which
# is enabled by default.
# Enable parameter wrapping for JSON. You can disable this by setting :format to an empty array.
ActionController::Base.wrap_parameters :format => [:json]
# Disable root element in JSON by default.
if defined?(ActiveRecord)
ActiveRecord::Base.include_root_in_json = false
end
答案 1 :(得分:8)
尝试直接在Comment
型号上进行设置。
class Comment < ActiveRecord::Base
self.include_root_in_json = true
end
答案 2 :(得分:3)
此外,引导3.1的新的params包装器很有意义:
的ActionController :: ParamsWrapper
将参数哈希包装到嵌套哈希中。这将允许客户端提交POST请求,而无需指定任何根元素。
http://edgeapi.rubyonrails.org/classes/ActionController/ParamsWrapper.html