【问题标题】:Changing devise_invitable mailer subject更改 devise_invitable 邮件主题
【发布时间】:2013-06-16 21:32:33
【问题描述】:

默认情况下,邀请邮件的主题是

  mailer:
      invitation_instructions:
        subject: 'Invitation instructions'

我想改成

subject: '%{invited_by} has invited you!'

但这需要 i18n 的 translate 方法可以访问受邀的变量。

如何在不过多更改默认行为的情况下访问/声明此变量?

【问题讨论】:

  • 很抱歉打扰,但您似乎不认为我的回答值得您赏金,我对此有点好奇。你觉得答案是错误的,还是不够详细,还是什么?
  • 实际上,我赞成它,我现在正在检查它是否按预期工作。

标签: ruby-on-rails devise actionmailer rails-i18n devise-invitable


【解决方案1】:

设计默认邮件程序对您不起作用,但设置自定义邮件程序并在其中定义您自己的 subject_for 助手非常容易:

# in config/initializers/devise.rb:
...
config.mailer = "CustomDeviseMailer"
...
# in app/mailers/custom_devise_mailer.rb:

class CustomDeviseMailer < Devise::Mailer
  protected

  def subject_for(key)
    return super  unless key.to_s == 'invitation_instructions'

    I18n.t('devise.mailer.invitation_instructions.subject', 
      :invited_by => resource.invited_by.try(:full_name) || 'Someone')
  end
end

【讨论】:

  • 在某些时候,他们将其从字符串转换为符号,因此您可能需要使用 return super 除非 key == :invitation_instructions
  • 另外,我认为这个答案应该被标记为“正确”,@NickGinanto
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2017-09-12
  • 2016-02-29
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-09-01
  • 2017-01-28
相关资源
最近更新 更多