2011-06-29 28 views
6

ActiveRecord::Base.include_root_in_json = true parece que no funciona en los rieles 3.10.rc4 y no lo veo en los documentos.Rails 3.1 include_root_in_json

Como el elemento raíz ahora está desactivado de forma predeterminada, ¿cómo lo reactivamos?

@comments.to_json en carriles de 3.1 ahora se ve como

[ 
    { 
    comment: "Fun street park.", 
    created_at: 2011-06-29T02:28:29Z, 
    } 
] 

y en versiones anteriores que tiene el nodo raíz que necesito para volver.

[ 
    { 
    comment: { 
     comment: "Fun street park.", 
     created_at: 2011-06-29T02:28:29Z 
    } 
    } 
] 

Respuesta

8

Intente configurar esto directamente en su modelo Comment.

class Comment < ActiveRecord::Base 
    self.include_root_in_json = true 
end 
15

Resulta que Rails 3.1 solo crea este archivo de configuración json para usted. No sabía que este archivo estaba aquí, así que mi archivo en inicializadores fue ignorado.

En la respuesta de Ryan anterior anula esta configuración.

config/inicializadores/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