我有一个Rails 3控制器:
class EmployeeController < ApplicationController
respond_to :json
def index
employees = Employee.all
respond_with employees
end
end
如果我放入一个pry断点并在to_json
上调用employees
,我会得到我所期望的 - 一系列JSON对象的序列化,其属性是我{{1}的属性} ActiveRecord模型:
Employee
但是,当从控制器返回JSON结果时,它已经获得了两个附加的对象包装层:一个围绕列表本身,一个围绕每个对象:
[1] pry(#<EmployeeController>)> employees.to_json
=> "[{\"created_at\":\"2013-06-21T19:22:14Z\",\"email\":\"ian@ ...
我正在使用的库不期望这些额外的包装层。 Rails的哪一部分负责添加它们,这是我可以控制的行为吗?
版本:
{"employee":[{"employee":{"created_at":"2013-06-21T19:22:14Z","email":"ian@ ...
更新
JSON gem版本:
$ rails -v
Rails 3.2.13
答案 0 :(得分:1)
呼叫
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
在config / initializers / wrap_parameters.rb中。