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

AnA*_*ice 24 ruby-on-rails actionmailer ruby-on-rails-3

我有一个带布局的user_mailer.

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

有任何想法吗?

And*_*all 39

只需在邮件中指定:

layout false
Run Code Online (Sandbox Code Playgroud)

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

layout false, :only => 'email_method_no_layout'
Run Code Online (Sandbox Code Playgroud)

(适用的API文档)

  • 不幸的是`layout'my_layout',除了:'action'`对我不起作用.我必须使用`mail([...])do | format | action.text {render layout:nil}}在动作中结束. (5认同)

pas*_*llo 5

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

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
Run Code Online (Sandbox Code Playgroud)