这个问题在这里已有答案:
我在我的Rails应用程序中有一个典型的邮件程序设置,它有两个视图(.text.erb和.html.erb),用于邮件程序类的每个方法 . 这些视图位于app / views /目录中,并且正在正确呈现它们 .
现在,我可以渲染一个标记模板在字符串变量中的视图,而不是渲染app / views / *目录中的文件 .
要使用的模板因用户而异,并从数据库中选取 . 如何渲染此字符串中的ERB模板,而不是在views目录中呈现模板文件?
一个非常相似的问题,但是来自Django世界是这样的:Load template from a string instead of from a file
请注意:我不想将渲染视图的输出捕获为字符串 . 关于这一点,有几个问题 .
请注意那些将其标记为重复的人:这不是关于控制器视图,而是关于邮件程序视图 . 每个邮件程序方法都有两个视图,需要呈现这两个视图,然后在电子邮件中作为适当的内容发送 .
2 回答
我会从数据库中获取我的sting / template,然后使用ERB内联它 . 这允许您设置实例变量并通过本地绑定将它们传递给ERB . 对我来说,这是最灵活的方法 .
当然 . 这很简单
render inline: string_template
对于邮件视图: