我在向 rails 3 中的注册用户发送邮件时收到此错误:
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
我正在使用:
- 导轨版本 3.0.1
- 操作邮件 3.0.1
邮件 gem 检查编码的全局常量。如果它由任何 gem 或您的代码定义,那么它调用编码!在邮件对象上。下面是来自 UnstructuredField 邮件 gem 类的调用:
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
尝试使用 ruby 版本 1.9我在将 devise 与 rails 3.0.3 和 ruby 1.8.7 一起使用时出现此错误。我迁移到 ruby 1.9,它就像一个魅力。