我们使用 rake 任务每 24 小时自动生成一份时事通讯。时事通讯顶部有一个部分,管理员可以在其中放置自定义消息。管理员使用的屏幕上有时事通讯的实时预览(他们坚持这样做),使用带有集合的 haml 部分呈现。
为了生成和发送电子邮件,我们将 xml 文档发送到第三方 API,其中包含(除其他外)我们想要生成的电子邮件的 HTML。
我想要做的是将这个 haml 部分的输出保存在 rake 任务中,类似于 PHP 的 ob_*() 缓冲函数。有没有办法做如下的事情:
ob_start();
render :partial => newsletter, :collection => posts
newsletter_html = ob_get_contents()
xml = "
<Creative>
<Name>Our Newsletter -- #{Time.now.strftime('%m/%d/%Y')}</Name>
<HTML><html><body>#{newsletter_html}</body></html></HTML>
...
</Creative>"
我可能遗漏了一些明显的东西,我可以想出一些方法来做到这一点,但其中大多数都不是 DRY,我不想在帮助程序、模型或任务本身中生成大量 html。
让我知道是否有办法让我做到这一点。