在 Rails 的 Mailer 视图中获取格式

Posted

技术标签:

【中文标题】在 Rails 的 Mailer 视图中获取格式【英文标题】:Getting Format in Mailer View in Rails 【发布时间】:2018-05-07 16:03:20 【问题描述】:

在我的 Rails 应用程序中,我在 Mailer 视图中使用一种方法来创建一个链接,该链接采用基于 htmltext 格式的格式参数。

mailer_link_to( url, link_text, format )

根据格式,它要么为 html 创建一个锚点 <a> 标记,要么只为文本显示 url

所以对于每个 Mailer 方法,我有两种观点:

myemail.html.erb
myemail.text.erb

myemail.html.erb 中,我使用mailer_link_to( "http://ntwrkapp.com", "ntwrk", "html" )

myemail.text.erb 中,我使用mailer_link_to( "http://ntwrkapp.com", "ntwrk", "text" )

我想知道的是我是否可以确定格式是什么,这样我就不必重复自己,每次都指定"html""text"

如果我在普通视图/控制器中,我会执行request.format 之类的操作,但 request 对象在 Mailer 视图中不可用。

谢谢!

【问题讨论】:

【参考方案1】:

使用self.formats

在this other answer 中发现,每个视图都有一个.formats 方法,其中包含一个格式数组,这些格式将在部分等中使用:

self.formats #=> [:text]

因此,您可以使用它手动将当前格式传递给mailer_link_to 方法,如下所示:

mailer_link_to( "http://ntwrkapp.com", "ntwrk", self.formats.first )

为了抢占任何人说我应该只使用部分,这将自动传递正确的格式,我同意!为了提出问题,我简化了我的示例,但在我的实际用例中,我确实需要手动获取 Mailer View 的格式。感谢您尝试提供帮助。

【讨论】:

以上是关于在 Rails 的 Mailer 视图中获取格式的主要内容,如果未能解决你的问题,请参考以下文章

在 Rails 3.1 中为 Mailer 和 View 提供自定义助手

Rails 4.1 Mailer预览和设计自定义电子邮件

用于 webmail 的 rails 4 action mailer 设置 (SMTP)

Rails Mailer 引用可打印替换 = 由 =3D

Rails Action Mailer Document

Rails Mailer “Net::OpenTimeout: execution expired” 仅在生产服务器上出现异常