假设您使用 Pony 的原始 Sinatra 路线如下所示:
post 'test_mailer' do
Pony.mail :to => ['test1@me.com', 'test2@me.com'],
:from => 'you@you.com',
:subject => 'testing',
:body => erb(:test_mailer)
end
可以看到这里的 email 属性是由一个 Hash 指定的。当切换到使用 Mail gem 时,它的属性由在特定上下文中调用的块定义,以便这些特殊方法可用。
我认为这个问题可能与erb
在块内调用有关。您可以尝试以下几件事:
尝试以可以传递到块中的方式生成 ERB:
post 'test_mailer' do
email_body = erb :test_mailer, locals: {fields: fields}
Mail.deliver do
to ['test1@me.com', 'test2@me.com']
from 'you@you.com'
subject 'testing'
body email_body
end
end
或者全局调用 ERB 而不是使用 sinatra 助手:
post 'test_mailer' do
context = binding
Mail.deliver do
to ['test1@me.com', 'test2@me.com']
from 'you@you.com'
subject 'testing'
body ERB.new(File.read('views/test_mailer.erb')).result(context)
end
end