Ruby on Rails: .constantize: mauvais nom de constante d'erreur?
Je suis en utilisant ceci:
4.times { |i| assert_not_equal("content#{i + 2}".constantize, object.first_content) }
et je l'ai déjà déclaré les variables locales
content1
content2
content3
content4
content5
l'erreur que je reçois
NameError: wrong constant name content2
Whot fait cette erreur signifie? Je suis assez sûr que je veux contenu2 =\
OriginalL'auteur NullVoxPopuli | 2011-06-21
Vous devez vous connecter pour publier un commentaire.
Vous devez appeler ruby constantes avec une grande lettre:
Content2
au lieu decontent2
.Lien
Il convient de noter cependant qu'il n'y a pas une telle chose comme des variables constantes, mais des valeurs constantes.
Désolé pour la suppression des commentaires, j'ai gardé l'incompréhension votre question
comme... maintenant, c'est la valorisation de la chaîne de je la donne. alors, actuellement, .constantize tourne "bonjour" en Bonjour. Est-il rien qui va "tourner " bonjour" en bonjour. (respect de la casse)
Si vous voulez que la valeur de la variable que vous pouvez simplement utiliser la fonction eval (mais attention, bien sûr)
OriginalL'auteur Yet Another Geek
Pouvez vous s'il vous plaît utilisateur eval("content#{i + 2}")
Noter que eval est dangereux, cependant 🙂
Lors de l'utilisation de eval nous pourrions faire quelque chose comme ceci: eval(de l'utilisateur.nom). Si l'utilisateur a saisi "('rm-rf /')" nous pourrions nous retrouver dans la suppression du système de fichiers.
oh chers. ne serait pas le système de demander la permission avant d'exécuter cette commande?
Ce qui si l'utilisateur.nom renvoie l'Utilisateur.destroy_all 🙂
OriginalL'auteur Arun Kumar Arjunan