ActionMailer的Rails - 如何禁用某个邮件程序的布局

时间:2011-03-07 01:06:13

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

我有一个带布局的user_mailer。

对于我的一个动作管理器方法,我希望邮件程序不使用默认布局。但我看不到找到No Layout的设置。

有什么想法吗?

4 个答案:

答案 0 :(得分:39)

只需在邮件中指定:

layout false

您还可以附加:only => my_action(或:except)来限制其适用的方法,如下所示:

layout false, :only => 'email_method_no_layout'

applicable API documentation

答案 1 :(得分:3)

布局方法可以接受方法的名称;使用该方法确定是否显示布局并返回该名称或为false。

layout :choose_layout
...

private
def choose_layout
  if something
    return false
  else
    return 'application'
  end
end

答案 2 :(得分:3)

我是通过使用一个小函数来做的,查看动作名称并返回要使用的正确邮件程序布局:

class TransactionMailer < ApplicationMailer

  layout :select_layout

  def confirmation_email contact
    #code
  end

  private
  def select_layout
    if action_name == 'confirmation_email'
      false
    else
      'mailer'
    end
  end
end

答案 3 :(得分:1)

您也可以非常粗略,并在特定邮件程序操作结束时调用mail()之前执行此操作:

@_action_has_layout = false