我想允许rails app的用户通过表单创建自己的电子邮件模板,并将其用作网站标准电子邮件模板表单,哪些邮件将被发送但我找不到任何教程,它还需要包含几个动态变量. 这样做是否有明确
这样做是否有明确的方法?
(因此用户将以引用变量的形式输入电子邮件文本
在发送之前将被评估)
首先,您需要将用户生成的电子邮件模板存储在数据库中.
CustomEmailTemplate.create(user_id: params[:user_id], template_body: params[:template_body])
什么时候发送模板的电子邮件,你会做类似的事情:
custom_values = { name: "Whatever", value: "nice" } template = CustomEmailTemplate.find(template_id) CustomerEmailer.send_email(template, custom_values).deliver
为了使它真正起作用,你需要在邮件中做这样的事情:
def send_email(template, custom_values) @template = template @custom_values = custom_values mail subject: "Your subject goes here.." end
在send_email.html.erb中,执行以下操作:
<%= @template.template_text.gsub(/@@name@@/, @custom_values[:name]).gsub(/@@value@@/, @custom_values[:value]) %>
您会看到模板包含“@@ name @@”和“@@ value @@”.这些是您可以使用自定义值替换的标记.
当然,您可以重构此代码以将替换逻辑放入模型等中,以使其成为“干净的代码”.
我希望这有帮助.