ActionMailer 3错误 - 未定义的方法`encode!'为“欢迎”:字符串

时间:2011-05-16 12:18:21

标签: ruby-on-rails ruby-on-rails-3 actionmailer

我在rails3中向注册用户发送邮件时收到此错误:

undefined method 'encode!' for "Welcome":String

我有以下代码

 @content=content
 mail(:to => content[:email], :subject => "test")

如果有主题,则显示上面的错误消息,如果我删除主题内容

@content=content
mail(:to => content[:email], :subject => "")  no error  message sending with out subject  

我正在使用:

  • Rails版本3.0.1
  • 动作邮件3.0.1

2 个答案:

答案 0 :(得分:1)

邮件gem检查编码全局常量。如果它由任何gem或您的代码定义,那么它调用encode!在邮件对象上。这是来自UnstructuredField mail gem class的调用:

def encode(value)
  value.encode!(charset) if defined?(Encoding) && charset
  (value.not_ascii_only? ? [value].pack("M").gsub("=\n", '') : value).gsub("\r", "=0D").gsub("\n", "=0A")
end

对我来说,这是邮件主题,一个字符串,所以我猴子修补了字符串:

class String
  def encode!(value)
   #Do any encoding or simply return it
   value
  end
end

答案 1 :(得分:0)

尝试使用ruby 1.9版 使用带有rails 3.0.3和ruby 1.8.7的设计时出现此错误。 我迁移到ruby 1.9,它就像一个魅力。