我正在使用Ruby 1.9.3并在尝试使用SendGrid API时在以下行中收到以下错误。
错误[在“mailer.mail(mail_defaults)
”下面的这一行显示:
NoMethodError (undefined method `to_h' for #<Hash:0x00000005da0958>):
CODE:
recipients = []
recipient = SendGrid::Recipient.new('jn@geo.com')
recipient.add_substitution('name', 'Billy Bob')
recipient.add_substitution('number', 1234)
recipient.add_substitution('time', '10:30pm')
recipients << recipient
# then initialize a template
template = SendGrid::Template.new('blahblah7bef2-d25b00')
# create the client
# see client above
# set some defaults
mail_defaults = {
:from => 'no-reply@geo.com',
:html => '<h1>I like email tests</h1>',
:text => 'I like email tests',
:subject =>'Test Email is great',
}
mailer = SendGrid::TemplateMailer.new(client, template, recipients)
# then mail the whole thing at once
mailer.mail(mail_defaults)
我认为它可能是我的mail_defaults数组,所以我尝试了这个(见下文)并在同一行收到了同样的错误。
mail_defaults = {
from: 'no-reply@geo.com',
html: '<h1>I like email tests</h1>',
text: 'I like email tests',
subject: 'Test Email is great',
}
我的代码中是否有错误或SendGrids mailer.mail方法中的错误?
答案 0 :(得分:0)
这个问题出在mail.mailer上。这在内部使用了to_h方法,这是在Ruby 2.1中实现的。实际上,sendgrid sdk现在需要ruby 2.1。我在Ruby 1.9.3中遇到了同样的问题,并通过升级到2.1来解决它。
这是我在CentOS 6上升级到Ruby 2.1的原因(不是我的要点): https://gist.github.com/mustafaturan/8290150
希望这有帮助。