NoMethodError:在rails 3.1邮件程序上调用deliver时未定义的方法'index'

时间:2012-01-17 00:20:29

标签: ruby-on-rails heroku actionmailer

我已经在Heroku上设置了一个rails 3.1应用程序的暂存实例,除了我尝试发送电子邮件时遇到一个奇怪的错误,一切似乎都正常。我正在使用sendgrid入门插件来发送电子邮件。完整错误如下:

NoMethodError: undefined method `index' for #<Mail::Message:0x000000048daf28>
    /app/.bundle/gems/ruby/1.9.1/gems/mail-2.3.0/lib/mail/message.rb:1289:in `method_missing'
    /app/.bundle/gems/ruby/1.9.1/gems/mail-2.3.0/lib/mail/encodings.rb:117:in `value_decode'
    /app/.bundle/gems/ruby/1.9.1/gems/mail-2.3.0/lib/mail/encodings.rb:101:in `decode_encode'
    /app/.bundle/gems/ruby/1.9.1/gems/mail-2.3.0/lib/mail/fields/unstructured_field.rb:74:in `do_decode'

如果我只是生成消息对象而不调用它的传递并检查它一切似乎都很好。我的生产应用程序没有看到此错误。你能告诉我这个错误意味着什么以及如何解决它吗?感谢。

5 个答案:

答案 0 :(得分:11)

使用Rails 3.0.11在本地计算机上出现相同的错误。它发生在我将一些对象而不是字符串传递给mail :to属性之后。所以请确保:to属性是一个字符串!

mail(to: object.to_s)

答案 1 :(得分:1)

本周末发布了新版本的Mail,Mail 2.4.0。我建议升级到这个最新版本,看看是否已经修复了你的问题。

答案 2 :(得分:1)

此错误是在定义我创建的邮件助手时使用Class而不是Module的结果。

答案 3 :(得分:0)

发生此错误是因为我将自定义标头设置为整数值。对这些值使用to_s为我解决了这个问题。

答案 4 :(得分:0)

我有类似的问题。但是,我收到的错误是:

NoMethodError (undefined method `ascii_only?' for nil:NilClass)

我的问题是我:

mail(to: emails,....)

我的变量“电子邮件”实际上是一个数组,而不是一个单独的电子邮件串。