jsonapi-resources 0.10.5调用serialize_to_hash报无方法错误如何解决?
报错根源
你遇到的undefined method 'serialize_to_hash'报错核心原因是0.10.5版本的jsonapi-resources gem的API和参考文档描述不一致:0.10.x分支的JSONAPI::ResourceSerializer类从未提供serialize_to_hash实例方法,该方法为其他版本的API,属于官方同版本文档的内容错误。
修复方法
直接将控制器代码中的serialize_to_hash替换为该版本正确的序列化方法serialize即可,同时无需传递第二个nil参数:
class V2::ProjectController < V2::BaseController def index project = Project.find(1) # 修正后的序列化调用代码 JSONAPI::ResourceSerializer.new(ProjectResource).serialize(ProjectResource.new(project, nil)) end end
补充说明
- 序列化配置:如果需要自定义序列化规则,可以给
serialize方法传入配置哈希,常用配置如下:include:设置需要嵌套返回的关联资源fields:设置返回字段的白名单,实现按需返回params:透传给对应Resource的上下文参数
- 控制器名核对:你提供的报错中显示触发报错的控制器是
V2::ProjectTypesController,和你贴出的V2::ProjectController名称不一致,如果修改后仍有报错,可检查是否修改错了对应控制器的代码。
内容的提问来源于stack exchange,提问作者soltex
相关产品推荐
相关产品推荐

