为 ActionMailer 渲染不同的视图(模板)

2024-04-17

我正在尝试对 ActionMailer (Rails 3.1.1) 中的不同模板进行条件渲染。我希望大多数用户都能正常使用welcome.html.erb模板,但有些用户得到特殊welcome_photographer.html.erb模板。这种类型的事情在 ActionController 中起作用:

# (in /app/mailers/user_mailer.rb) 
def welcome(user)
  @user = user
  mail(:to => "#{@user.name} <#{@user.email}>", :subject => "Welcome to ...")
  render "welcome_photographer" if @user.is_photographer
end

但渲染不起作用——每个人都得到标准welcome.html.erb即使@user.is_photographer == true


拨打电话后您不应该尝试做任何事情mail()。但是,要选择其他模板,您应该通过:template_name作为一个选项。例如:

template = @user.is_photographer ? "welcome_photographer" : "welcome"
mail(:to => "#{@user.name} <#{@user.email}>", 
     :subject => "Welcome to ...", 
     :template_name => template)
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

为 ActionMailer 渲染不同的视图(模板) 的相关文章

随机推荐