升级至Haml 6后触发ActionView模板错误的排查与解决求助
错误原因
这个错误是Haml 6与旧版haml-rails不兼容导致的:
- Haml 6对Rails视图渲染的内部交互逻辑做了大幅调整,而你当前使用的
haml-rails 2.1是针对Haml 5开发的,无法适配Haml 6的新API - 堆栈追踪指向partial第一行是因为Haml编译模板时的内部调用出错,并非你自己的代码直接调用了
safe_concat——实际是旧版haml-rails传递了错误类型的参数(哈希{:add_to_stack=>true})给Haml 6的渲染方法,导致Haml误将其当成字符串拼接对象调用了safe_concat
解决步骤
- 升级
haml-rails到兼容版本:修改Gemfile中的haml-rails版本为>= 2.2.0(该版本专门适配Haml 6),执行bundle update haml-rails - 清理视图缓存:运行
rails tmp:clear清除旧的编译模板文件,避免缓存残留引发问题 - 检查自定义Haml相关代码:如果项目中有自定义的Haml helper、模板渲染钩子等,需确认它们是否依赖Haml 5的内部逻辑,如有则调整适配Haml 6的新API
内容的提问来源于stack exchange,提问作者lucas
相关产品推荐
相关产品推荐

