Rails生成的JSON中的其他对象包装器
我有一个Rails 3控制器:Rails生成的JSON中的其他对象包装器,json,ruby-on-rails-3,Json,Ruby On Rails 3,我有一个Rails 3控制器: class EmployeeController < ApplicationController respond_to :json def index employees = Employee.all respond_with employees end end 但是,当从控制器返回JSON结果时,它已经获得了两层额外的对象包装器:一层围绕列表本身,另一层围绕每个对象: {"employee":[{"employee":{"c
class EmployeeController < ApplicationController
respond_to :json
def index
employees = Employee.all
respond_with employees
end
end
但是,当从控制器返回JSON结果时,它已经获得了两层额外的对象包装器:一层围绕列表本身,另一层围绕每个对象:
{"employee":[{"employee":{"created_at":"2013-06-21T19:22:14Z","email":"ian@ ...
我正在使用的库不需要这些额外的包装层。Rails的哪个部分负责添加它们,这是我可以控制的行为吗
版本:
$ rails -v
Rails 3.2.13
更新
JSON gem版本:
$ grep -i json Gemfile.lock
multi_json (~> 1.0)
multi_json (~> 1.0)
json (1.8.0)
multi_json (1.7.7)
json (~> 1.4)
multi_json (~> 1.0)
multi_json (~> 1.0, >= 1.0.2)
召唤
在渲染之前,查看得到的结果
如果有效,就把
# Disable root element in JSON by default.
ActiveSupport.on_load(:active_record) do
self.include_root_in_json = false
end
在您的config/initializers/wrap_parameters.rb.中,这听起来像是我正在经历的行为,但是
include_root_in_json
已经为false,默认值已经在wrap_parameters.rb
中设置为false。这让我怀疑我的JSON库是否合适——我将用我的JSON gems更新这个问题。。你能试试旧版本的json gem吗?
ActiveRecord::Base.include_root_in_json = false
# Disable root element in JSON by default.
ActiveSupport.on_load(:active_record) do
self.include_root_in_json = false
end