ActiveRecord::Base.include_root_in_json = true
doesn't seem to be working in rails 3.10.rc4 and I don't see it in the docs.
Since the root element is now off by default how do we re-enable it?
@comments.to_json
in rails 3.1 now looks like
[
{
comment: "Fun street park.",
created_at: 2011-06-29T02:28:29Z,
}
]
And in previous versions it has the root node which I need to get back.
[
{
comment: {
comment: "Fun street park.",
created_at: 2011-06-29T02:28:29Z
}
}
]
It turns out that Rails 3.1 just creates this json config file for you. I didn't know this file was here so my file in initializers was ignored.
In Ryan's answer above does override this setting.
config/initializers/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
Try setting this directly on your Comment
model.
class Comment < ActiveRecord::Base
self.include_root_in_json = true
end
Also, the params wrapper, new in rails 3.1, is of interest:
ActionController::ParamsWrapper
Wraps the parameters hash into a nested hash. This will allow clients to submit POST requests without having to specify any root elements.
http://edgeapi.rubyonrails.org/classes/ActionController/ParamsWrapper.html
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With