You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Rails 6升级至7后ActionMailer出现NoMethodError错误求助

Rails 6 升 Rails 7 后邮件测试报错解决办法

问题情况

升级到 Rails 7 后,原本正常的邮件测试功能报错:

NoMethodError (undefined method `preview_path=' for ActionMailer::Base:Class
Did you mean?  preview_paths=
               preview_paths
               _view_paths=):

已确认代码中未使用 preview_path,且移除了 letter_opener 等邮件相关 gem,但错误仍触发在 ApplicationMailer 继承 ActionMailer::Base 的首行,当前 ApplicationMailer 仅包含基础定义:

class ApplicationMailer < ActionMailer::Base
  add_template_helper(EmailHelper)
  default from: 'Test'
  layout 'mailer'
end

排查修复步骤

  • 搜索项目所有配置文件(如 config/environments/*.rb、config/application.rb),检查是否遗留 config.action_mailer.preview_path = ... 配置,替换为 config.action_mailer.preview_paths = [...](注意是复数形式,接收数组参数)。
  • 执行 rails tmp:clear 清除临时缓存,避免旧配置缓存导致报错。
  • 检查第三方依赖 gem:虽然移除了邮件相关 gem,但其他依赖可能间接调用了过时的 preview_path= 方法。用 bundle show 列出所有 gem,排查是否有不兼容 Rails 7 的版本,必要时升级这些 gem。
  • 查看 config/initializers/ 目录下的初始化文件,确认是否有针对 ActionMailer 的代码使用了 preview_path=,替换为 preview_paths= 即可。
  • 验证 Rails 7 安装完整性:执行 rails --version 检查版本,若有异常重新执行 bundle update rails 确保所有 Rails 组件升级到位。

内容的提问来源于stack exchange,提问作者brokenbells

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.17 03:22:33