gpt4 book ai didi

ruby - 如何在 Mail gem 中使用 body erb 模板?

转载 作者:数据小太阳 更新时间:2023-10-29 08:32:43 24 4
gpt4 key购买 nike

我想在邮件 erb 模板中用作正文。当我在 Pony gem 上设置它时它起作用了。

post 'test_mailer' do
Mail.deliver do
to ['test1@me.com', 'test2@me.com']
from 'you@you.com'
subject 'testing'
body erb(:test_mailer) # this isn't working
end
end

private

fields = [1, 2] # some array

ERB 文件

<% fields.each do |f| %>
<%= f %>
<% end %>

最佳答案

假设您使用 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 时,它的属性由在特定上下文中调用的 block 定义,以便这些特殊方法可用。

我认为问题可能与在 block 内调用 erb 有关。以下是您可以尝试的几件事:

尝试以一种可以传递到 block 中的方式生成 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

关于ruby - 如何在 Mail gem 中使用 body erb 模板?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16019282/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com