views:

109

answers:

1

to_json method in rails 2.0.2 for objects(say user model object with id and name)used to give simple output in the form

{"id":"xyz","name":"hello"}

But while upgrading the rails to 2.3.4 it gives the output as

{"user":{"id":"xyz","name":"hello"}}

This is breaking my most of the frontend code.

Is there way to get the results in the same fashion as in 2.0.2 ???

Looking for a speedy answer from you guys!!

A: 

You need to edit the file config/initializers/new_rails_defaults.rb and change ActiveRecord::Base.include_root_in_json = true to false. That should do it. See the to_json documentation.

If for some reason you don't have that file, this is what it should look like in a default Rails 2.3.x app.

# Be sure to restart your server when you modify this file.

# These settings change the behavior of Rails 2 apps and will be defaults
# for Rails 3. You can remove this initializer when Rails 3 is released.

if defined?(ActiveRecord)
  # Include Active Record class name as root for JSON serialized output.
  ActiveRecord::Base.include_root_in_json = true

  # Store the full class name (including module namespace) in STI type column.
  ActiveRecord::Base.store_full_sti_class = true
end

# Use ISO 8601 format for JSON serialized times and dates.
ActiveSupport.use_standard_json_time_format = true

# Don't escape HTML entities in JSON, leave that for the #json_escape helper.
# if you're including raw json in an HTML page.
ActiveSupport.escape_html_entities_in_json = false
rspeicher