2016-09-16 4 views
1

Je suis nouveau sur RoR et j'aimerais personnaliser les messages flash Devise pour utiliser le nom de l'utilisateur actuel.Interpolation de chaîne dans les messages Flash?

j'ai vu que le fichier d'origine comprend la ligne suivante:

devise.en.yml

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

J'ai appliqué la même règle à:

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}\"." 

mais le code n'est pas en cours d'exécution et imprime toute la phrase sous forme de chaîne.

Toute aide serait appréciée! :)

Répondre

3

Il devrait être

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

Et vous devez l'appeler comme:

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

Vous ne pouvez pas utiliser l'interpolation rubis dans le fichier yml mais vous pouvez passer variable à la translation et l'utilisation yml syntaxe d'interpolation %{}