可编辑的rails邮件模板

时间:2014-05-07 13:39:50

标签: ruby-on-rails email

我试图为Rails做一个可编辑的模板,但我无法弄清楚。基本上我试图做的是一个普通的动作邮件程序视图,但在我发送它之前,我希望能够编辑它的内容。

总结一下,假设我在邮件文件夹中有一个report_user.html.rb视图(里面有我的默认模板),当我点击一个报告按钮时,会出现一个带有编辑器的文本区域的新页面。在这个编辑器中,我希望拥有我的默认模板的邮件正文,进行更改,然后在我点击发送后,它会发送适合我模板其余部分的新更改。

有没有办法做到这一点?

3 个答案:

答案 0 :(得分:0)

您想要创建标准的Rails表单。如果您只有一封电子邮件,则可以将默认文本保存在Rails代码中,否则您可以将电子邮件模板保存在模型中。在页面加载时加载表单中的默认内容,然后在单击“发送”时发送电子邮件。

(如果你想使用Markdown,请在发送之前使用像Redcarpet这样的宝石处理文本。)

答案 1 :(得分:0)

我想这就是你想要的。

<强> 1。没有默认模板

从用户那里获取一个字符串,然后将其传递给发送电子邮件的方法。

class UserMailer < ActionMailer::Base def welcome_email(user, email_body) mail(to: user.email, body: email_body, content_type: "text/html", subject: "Already rendered!") end end

<强> 2。使用电子邮件模板

<强> report_user.html.rb

<html> <body>$body_content<body> </html>

获取模板并将$ body_content替换为params [:body]

希望有效

答案 2 :(得分:0)

我假设您已经拥有与报告页面中的发送操作相对应的控制器操作。

要在文本字段中加载邮件正文,您可以使用模板模型的实例,其中模板模型具有名为body的字段,它包含邮件模板的源代码,或者使用要预加载的静态文本文字形式。

这样您就可以编辑文本字段的内容并将其提交给控制器。在负责报告提交操作的控制器操作中,您可以访问params哈希中的所有提交数据。

创建新模板实例并将其传递给Mailer操作或将整个文本形式作为参数传递(不推荐)。

嵌入您在邮件程序操作视图中传递的模板对象的主体。 我的解决方案如下(为简洁起见,遗漏了一些代码)

在控制器中:

class ReportsController < ActiveController 
  def submit
      new_template = Template.create(params[:template])
      UserMailer.send_report(user_id, new_template.id)
  end
end

在邮件中:

  def send_report(user_id, template_id)
     @user = User.find(user_id)
     @template = Template.find(template_id)
     mail to: @user.email
  end

在模板中:

<%= @template.body %>