Rails6.1下从active-model-serializer迁移至jbuilder遇模板错误求助
jbuilder视图报错
undefined method 'json' for User解决方法 错误根源
你在jbuilder视图里写了user.json.id,这里的user是User模型实例,它本身并没有json方法,这是直接触发报错的原因。另外你提到调试时无法访问json或json.array!方法,大概率是jbuilder的视图上下文未正确加载,但核心问题还是前者。
修复方案
1. 修正jbuilder视图代码
把错误的user.json.id改成直接调用User实例的id属性:
# /app/views/users/index.json.jbuilder json.array! @users do |user| json.id user.id end
2. 确保jbuilder正常加载
- 检查Gemfile是否包含
gem 'jbuilder',没有的话添加后执行bundle install - 控制器中显式指定渲染格式,避免匹配错误:
# controller def users_jbuilder @users = User.where(event: params[:event_id]) render "users/index", formats: :json end
批量迁移建议
针对你要转换200余个AMS序列化器的场景:
- 编写批量转换脚本,将AMS的字段定义批量映射为jbuilder代码,减少手动重复劳动
- 先完成核心接口的迁移验证,总结通用转换规则后再批量推进
内容的提问来源于stack exchange,提问作者Dan
相关产品推荐
相关产品推荐

