我有一个不是ActiveRecord对象的类,我试图为它创建一个AM序列化器。我可以返回正确的json,但它不包括根
在我的控制器中有这个
format.json { render json: @current_user, root: "current_user" }
我的班级看起来像这样
class CurrentUser
include ActiveModel::Validations
include ActiveModel::Conversion
extend ActiveModel::Naming
attr_accessor :first_name, :last_name, :user_type, :user_id
end
我也尝试在控制器中添加它
def default_serializer_options
{root: true}
end
但我的json对象仍然没有Ember Model所需的根
返回对象
{"first_name":"Luke","last_name":"Skywalker","user_type":"Padawan","user_id":12}
我需要
{current_user: {"first_name":"Luke","last_name":"Skywalker","user_type":"Padawan","user_id":12} }
答案 0 :(得分:3)
对于未来可能遇到同样问题的人, 使用 ActiveModelSerializers 0.10.x 时,只需添加到现有的初始值设定项或创建一个新的初始值设定项并添加它以在响应中包含根节点:
配置/初始化/ serializer.rb :
ActiveModel::Serializer.config.adapter = :json
AMS documentation表示版本0.9.x和0.8.x不向后兼容。
答案 1 :(得分:1)
如果在您的控制器中使用default_serializer_options
不起作用,您可能需要查看config/initializers/wrap_parameters.rb
include_root_in_json
选项。
如果您感到好奇,可以找到该选项的相关源代码here。