rap*_*tle 3 email ruby-on-rails actionmailer ruby-on-rails-4
我想允许Rails应用程序的用户通过表单创建自己的电子邮件模板,并将其用作将要发送邮件的网站标准电子邮件模板表单,但是我找不到任何教程,它还需要包含几个动态变量。
是否有定义的方法来做到这一点?
(因此,用户将以引用变量的形式输入电子邮件文本,该变量将在发送前进行评估)
有很多方法可以实现它。这是一种方法。
首先,您需要将用户生成的电子邮件模板存储在数据库中。
CustomEmailTemplate.create(user_id: params[:user_id], template_body: params[:template_body])
Run Code Online (Sandbox Code Playgroud)
当需要发送有关模板的电子邮件时,您将执行以下操作:
custom_values = { name: "Whatever", value: "nice" }
template = CustomEmailTemplate.find(template_id)
CustomerEmailer.send_email(template, custom_values).deliver
Run Code Online (Sandbox Code Playgroud)
为了使它真正起作用,您需要在邮件程序中执行以下操作:
def send_email(template, custom_values)
@template = template
@custom_values = custom_values
mail subject: "Your subject goes here.."
end
Run Code Online (Sandbox Code Playgroud)
在send_email.html.erb中,执行以下操作:
<%= @template.template_text.gsub(/@@name@@/, @custom_values[:name]).gsub(/@@value@@/, @custom_values[:value]) %>
Run Code Online (Sandbox Code Playgroud)
您会看到模板包含“ @@ name @@”和“ @@ value @@”。这些是您可以用自定义值替换的标记。
当然,您可以重构此代码以将替换逻辑放入模型等中,以使其成为“干净的代码”。
我希望这有帮助。