升级Rails5.2后ActsAsTaggableOn报[]=未定义方法错误求助
解决ActsAsTaggableOn在Rails 5.2 + Ruby 2.5 + PostgreSQL下的NoMethodError问题
最近我把项目做了几项升级:Rails升到5.2、Ruby换到2.5,同时把开发数据库换成了PostgreSQL 9.3.18(pg gem版本1.0.0),结果遇到了之前从没出现过的问题:
我用ActsAsTaggableOn 5.0.0 gem实现了带有love_list和improve_list字段的评论表单,提交时直接抛出错误:
NoMethodError in CityReviewsController#create undefined method `[]=' for nil:NilClass
问题根源
这个错误是ActsAsTaggableOn 5.x版本与Rails 5.2+、PostgreSQL组合的兼容性问题导致的,gem内部处理标签赋值的逻辑里出现了nil对象调用方法的情况。
修复方案
直接升级ActsAsTaggableOn到6.0及以上版本,官方在6.0版本里已经针对性修复了这个兼容性问题。操作步骤很简单:
- 修改Gemfile中的版本声明:
gem 'acts-as-taggable-on', '>= 6.0' - 运行命令更新gem:
bundle update acts-as-taggable-on - 重启开发服务器后测试表单提交,问题就能解决了。
内容的提问来源于stack exchange,提问作者Twistedben
相关产品推荐
相关产品推荐

