2010-04-24 2 views
2

Je n'arrive pas à comprendre ce que je fais de mal ici.Problème avec l'affichage des noms d'utilisateur dans mon flash [: notice] - Développement Web Agile avec Rails - Chapitre 11

Je ne peux pas sembler obtenir le #{@user.name} pour travailler dans mon flash [: avis]

Tout le reste fonctionne très bien je peux ajouter de nouveaux utilisateurs, mais quand j'ajouter un nouvel utilisateur au lieu de dire "Utilisateur John Doe a été créé avec succès", il dit que "User #{@user.name} a été créé avec succès."

Je suis à ce stade dans l'application de dépôt: depot_p/app/controllers/users_controller .rb pour travailler.

Répondre

9

Ceci a à voir avec l'interpolation de chaîne qui est seulement pour les chaînes entre guillemets, cela n'a rien à voir avec le flash.

Vous pouvez remplacer la valeur de n'importe quelle expression Ruby par une chaîne entre guillemets en utilisant la séquence #{ expr }. Si l'expression est simplement une variable globale, une variable de classe ou une variable d'instance, vous pouvez omettre les accolades.

"Seconds/day: #{24*60*60}" » Seconds/day: 86400 
"#{'Ho! '*3}Merry Christmas" » Ho! Ho! Ho! Merry Christmas 
"This is line #$."   » This is line 3 

Pour plus d'informations, Programming Ruby est un livre en ligne gratuit Ruby.

2

Ok, je l'ai compris.

Les notifications Flash doivent être entre guillemets doubles et non entre guillemets. J'ai eu:

flash [: notice] = 'L'utilisateur #{@user.name} a été créé avec succès.'

Quand il aurait dû être flash [: notice] = "User #{@user.name} a été créé avec succès."

C'est un détail délicat pour un noob total. FYI pour les autres là-bas.

+0

Refusé parce que vous avez répondu à votre propre question si rapidement. – MJB

+2

@Lee: en fait ce n'est pas la raison. Le mécanisme d'interpolation de chaîne # {} fonctionne uniquement pour les guillemets doubles, et non pour les guillemets simples. La partie flash n'est pas pertinente ici. – JRL

0

D'accord avec JRL. Si vous voulez utiliser la syntaxe # {foo} dans n'importe quelle chaîne, vous devez utiliser des guillemets doubles.

Questions connexes