Ce code est extrêmement risqué et je ne peux pas voir une raison de le faire en premier lieu. Retirez le eval
et vous obtenez ce code très simple:
File.open('nagai.txt', 'a+') do |f|
f.puts parts[params[:salutation]]
end
L'erreur vient d'essayer de concaténer un Fixnum/entier à une chaîne dans le processus de construction du code puis eval
. Ce code est invalide et donne la même erreur:
"1" + 1
Ruby est pas comme d'autres langages tels que JavaScript, PHP ou Perl qui convertissent arbitrairement entiers en chaînes et vice-versa. Il y a une séparation difficile entre les deux et toute conversion doit être spécifiée avec des choses comme .to_s
ou .to_i
.
Cette version corrigée doit être équivalente. Si vous devez reporter ceci à un moment ultérieur, vous pouvez écrire une méthode:
def write_nagai(params)
File.open('nagai.txt', 'a+') do |f|
f.puts parts[params[:salutation]]
end
end
Ne faites pas cela. Votre code est vulnérable. –
Que puis-je faire pour l'améliorer – zzero
Je dois passer des variables – zzero