【发布时间】:2020-04-30 08:58:28
【问题描述】:
我有一个分组集合,我想对其进行序列化,但它返回错误“未定义的方法 `read_attribute_for_serialization' for #”。这是我没有序列化程序的示例数据:
{
"message": "success",
"data": {
"reports": {
"export": [
{
"name": "Order",
"report_type": "export",
"parameters": "\"{order_date: '10-10-2019'}\"",
},
{
"name": "Order",
"report_type": "export",
"parameters": "\"{order_date: '10-10-2019'}\"",
}],
"import": [
{
"name": "Order",
"report_type": "import",
"parameters": "\"{order_date: '10-10-2019'}\"",
},
{
"name": "Order",
"report_type": "import",
"parameters": "\"{order_date: '10-10-2019'}\"",
}
],
"details": [
{
"name": "Order",
"report_type": "details",
"parameters": "\"{order_date: '10-10-2019'}\"",
},
{
"name": "Order",
"report_type": "details",
"parameters": "\"{order_date: '10-10-2019'}\"",
}
]
}
}
}
这是我的序列化器:
class ReportSerializer < ActiveModel::Serializer
attributes :id, :name, :report_type, :parameters
def parameters
JSON.parse(object.parameters)
end
end
这是我的控制器代码:
def reports_list
reports = Report.all.group_by(&:report_type)
render_collection(reports, { name: 'reports' }, each_serializer: ReportSerializer)
end
但是给我一个错误:undefined method `read_attribute_for_serialization' for #<Hash:0x0000562eebbddee8>
请帮忙。谢谢。
【问题讨论】:
-
参数有双引号引起来。您需要删除引号。
-
@AmitPatel 是的,但这与她遇到的错误无关。
标签: ruby-on-rails ruby active-model-serializers