2010-12-10 97 views

回答

12

Model.to_json方法用于返回表示模型JSON字符串和我已经使用 self.include_root_in_json =在一个模型本身假

而且对整个应用程序,你可以尝试设置::加载ActiveModel = Base.include_root_in_json假在初始化[编辑本段不起作用。]

[编辑] 的ActiveRecord :: Base.include_root_in_json = true尝试将此行添加到config/environment.rb文件。

+0

这也适用于我self.include_root_in_json = false,但ActiveModel :: Base.include_root_in_json = false导致错误,就像它没有定义。 (我正在使用Rails 3) – 2010-12-10 11:41:33

+0

你可以尝试把下面一行放在config/environment.rb中 ActiveRecord :: Base.include_root_in_json = false – ranendra 2010-12-10 16:01:06

+2

我在config/initializers/active_record.rb中有一个初始化器,它包含' ActiveRecord :: Base.include_root_in_json = false',它适用于我(我使用Rails 3.0.4)。你必须记住的东西(它曾经让我意识到)是如果你改变一个初始化器,你需要重新启动你的服务器或重新加载你的控制台才能生效。 – 2011-02-27 10:37:20

1

对于默认的系统范围的配置常是好主意,设置初始化变量,如配置/初始化/ defaults.rb

5

我不知道这是否是对铁轨的更高版本的事实,但对我来说(运行2.3.5 ATM)已经有在/config/initializers/new_rails_defaults.rb此设置它被设置为一个声明:

ActiveRecord::Base.include_root_in_json = true 

所以,如果你尝试设置在另一个地方这个设置,那么它可能被覆盖。

+0

+1适用于我在'config/initializers/new_rails_defaults.rb'中将“true”更改为“false”。 – maerics 2011-05-24 18:34:10

1

我想你应该设置在配置的ActiveRecord :: Base.include_root_in_json = FALSE/application.rb中

加载ActiveModel不:: Base的

2

On Rails的3.2.2,这已经是在初始化设置:

--- config/initializers/wrap_parameters.rb ---

# Disable root element in JSON by default. 
ActiveSupport.on_load(:active_record) do 
    self.include_root_in_json = false 
end 
0

在 “配置/初始化/ wrap_elements.rb” 的Rails 4,你可以取消以下:

ActiveSupport.on_load(:active_record) do 
self.include_root_in_json = true 
end 
相关问题