在Rails中获取Mailer视图中的格式

时间:2017-11-23 16:17:38

标签: ruby-on-rails ruby-on-rails-3 actionmailer

在我的Rails应用程序中,我在我的Mailer视图中使用一种方法来创建一个链接,该链接根据格式参数是html还是text格式来获取格式参数。

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 个答案:

答案 0 :(得分:1)

使用self.formats

this other answer中发现每个视图都有一个.formats方法,其中包含将在partials和whatnot中使用的格式数组:

self.formats #=> [:text]

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

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

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