ruby-on-rails - ActionMailer 将局部变量传递给 erb 模板

标签 ruby-on-rails ruby actionmailer erb local-variables

我知道我可以定义实例变量,例如:

def user_register(username, email)
  @username = username
  @email = email

  mail(:to => email, :subject => "Welcome!", :template_name => "reg_#{I18n.locale}")
end

但是,有没有一种方法可以使用local 变量,就像将:locals 传递给partials 一样?

最佳答案

正如 ronalchn 指出的那样,它是 render:locals , 而不是 mail方法。因此,您需要直接访问 render方法以通过本地人。

你可以给mail一个 block 这样就可以访问 render方法,像这样:

mail(to: "your_mail@example.com", subject: "Test passing locals to view from mailer") do |format|
  format.html {
    render locals: { recipient_name: "John D." }
  }
end

现在您应该可以使用 "Hello <%= recipient_name %>"

关于ruby-on-rails - ActionMailer 将局部变量传递给 erb 模板,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12317000/

相关文章:

ruby-on-rails - 在整个 Rails 应用程序中使用一个客户端实例进行外部服务

ruby - 如何在单个语句/检查中替换嵌套哈希的多个 nil 检查?

ruby-on-rails - AWS 和 Rails : The authorization header is malformed; the Credential is mal-formed

mysql - Rails 错误 - 没有要加载的此类文件 -- mysql

ruby-on-rails - 一旦启用 Action 缓存,format.js 就不会操作 dom

mysql - 基于HABTM匹配的Rails查询

ruby - 在命令行参数中指定一个 nil

ruby-on-rails - 如何使用 Rails 在电子邮件主题中添加井号

ruby-on-rails - Heroku/devise - 缺少要链接的主机!请提供:host parameter or set default_url_options[:host]

css - 我想在我的 Action Mailer View 中使用 Bootstrap 2