我想在我的Devise电子邮件中包含特定于环境的信息(例如,表示电子邮件何时来自预生产环境(。
我使用的是Ruby 3.1.1、Rails 7.0.2.4和Devise 4.8.1。我想根据环境变量对设计电子邮件中的内容进行条件化(例如,密码重置(。
在config/locales/devise.en.yml
:中
en:
devise:
mailer:
reset_password_instructions:
subject: "Reset password instructions"
在其他配置文件中,我可以做一些类似的事情
ymlKey: "<%= ENV['SOME_ENV_NAME'] %>"
但当我尝试在devise.en.yml
:中这样做时
subject: "<%= ENV['SOME_ENV_NAME'] %>Reset password instructions"
CCD_ 3不被评估并且仅仅作为常规文本发送。
如何在设计电子邮件中使用ENV变量或其他条件逻辑?
除非您开发一个gem或使用类似的gem来实现这一点,因为这是一个.yml文件,并且必须以某种方式对其进行解析,以使字符串插值像ruby文件(.rb(一样工作
实现这一目标的另一种方法是执行以下操作:
在devise.en.yml
:中
subject: "%{some_env_name} Reset password instructions"
在发送电子邮件的行中,您可以这样做:
mail(to: user.email, subject: I18n.t('en.devise.mailer.reset_password_instructions.subject', :some_env_name => ENV['SOME_ENV_NAME']))
此外,在devise.en.yml
:中应用上述内容(我还没有测试过,但它可能会起作用……删除双引号(之前,您可以尝试执行以下操作:
subject: <%= ENV['SOME_ENV_NAME'] %>Reset password instructions