我在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
我正在使用:
答案 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,它就像一个魅力。