设计闪存消息中的字符串插值?

string interpolation in devise flash messages?

我是 RoR 的新手,我想个性化 Devise 快闪消息以使用当前用户的名称。

我看到原始文件包含以下行:

devise.en.yml

  failure: "Could not authenticate you from %{kind} because \"%{reason}\"."

所以我将相同的规则应用于:

sessions:
  signed_in: "Welcome back!."
  signed_out: "See you soon!."

-

sessions:
  signed_in: "Welcome back! \"#{current_user.first_name}\"."
  signed_out: "See you soon! \"#{current_user.first_name}\"."

但是代码没有执行,而是将整个句子打印为字符串。

如有任何帮助,我们将不胜感激! :)

应该是

sessions:
  signed_in: "Welcome back! %{name}."
  signed_out: "See you soon! %{name}."

你必须这样称呼它:

t('sessions.signed_in', name: current_user.first_name)
t('sessions.signed_out', name: current_user.first_name)

您不能在 yml 文件中使用 ruby 插值,但您可以将变量传递给 translation 并使用 yml 插值语法 %{}