【发布时间】:2018-04-06 14:48:06
【问题描述】:
我添加了 devise_invitable gem 和自定义邮件。它可以正常工作并且正常的设计电子邮件(例如,confirmation_instructions)可以正确读取 i18n 文件,但invitation_instructions 不是。
这里是 devise.en.yml:
en:
devise:
mailer:
confirmation_instructions:
subject: "Hi %{first_name}, please confirm your email to activate your account"
invitation_instructions:
subject: "%{first_name} has invited you to join their team!"
hello: "Oi"
someone_invited_you: "Pig"
自定义邮件类:
class CustomDeviseMailer < Devise::Mailer
def confirmation_instructions(record, token, opts={})
custom_options(record, opts, :confirmation_instructions)
super
end
def invitation_instructions(record, token, opts={})
custom_options(record, opts, :invitation_instructions)
super
end
private
def custom_options(record, opts, key)
opts[:subject] = I18n.t('subject', scope: [:devise, :mailer, key], first_name: record.first_name)
end
end
如果我将invitation_instructions 方法更改为:
def invitation_instructions(record, token, opts={})
custom_options(record, opts, :invitation_instructions)
opts[:subject] = "TEST"
super
end
然后邀请电子邮件主题正确更改为“TEST”。
那么为什么它不读取 i18n 文件呢?
注意
我还生成了默认的邀请视图,它也没有读取 i18n 文件。例如默认视图的第一行是:
\app\views\devise\mailer\invitation_instructions.html.erb
<p>
<%= t("devise.mailer.invitation_instructions.hello", email: @resource.email) %>
</p>
应该从 i18n 文件中呈现“Oi”,但它会呈现默认的“Hello”。
【问题讨论】:
标签: ruby-on-rails devise rails-i18n devise-invitable