Plus lisible et plus facile.
Sinon, pour ton soucis, ça vient du fait que tu pense que ( truc = machin )
ça fait une copie de la valeur de machin et ça la place dans trucs.
Eh bien non, si tu fais ça tu met la référence de l'objet référencé par
machin dans l'objet référencé par truc. De même, quand tu fais une fonction
et que tu lui passe des paramètres, ces paramètres ne sont pas des copies
des objets que tu donne, ce sont des références vers l'objet initial.
Donc quand tu fais :
:body => render_message("mail_mailing_list_all_plain", :message => message,
:id => mail[:id], :lang => mail[:language], :hash => mail_hash(mail[:mail]),
:subj => replace_spaces(subj_temp))
et plus précisément :
:subj => replace_spaces(subj_temp)
Tu passe l'objet résultat de la fonction replace_spaces(subj_temp).
Jusque là rien d'affolant.
Sauf si ta fonction tu l'as écrite comme ça :
def replace_spaces( subject )
subject.gsub! /\s/, '-'
end
Pourquoi ? Ca retourne pourtant bien subject avec les ' ' remplacés par des
'-' ? Oui, mais ça modifie ton objet passé en référence, comme l'indique le
'!' dans gsub!.
Donc, premièrement il faudrait mettre un gentil '!' à ta fonction
replace_spaces (=> replace_spaces!) pour indiquer clairement qu'elle modifie
son paramètre si tu veux la garder comme ça, ce serait plus gentil pour
aider ceux qui utiliseront ton code (toi compris) à se rappeller des effets
secondaires du bidule.
Ensuite, pour résoudre ton problème, il suffit de t'assurer que tu ne
modifie pas l'original, par exemple en utilisant gsub sans '!' au lieu de
gsub!, ou encore en faisant subject_tmp = subject.clone et en travaillant
sur subject_tmp (mais c'est moins propre que la première solution dans le
cas que j'ai supposé).
A mon avis c'est une variation sur ce thème.
--~--~---------~--~----~------------~-------~--~----~
Vous avez reçu ce message, car vous êtes abonné au groupe "Railsfrance" de
Google Groups.
Pour transmettre des messages à ce groupe, envoyez un e-mail à l'adresse
[email protected]
Pour résilier votre abonnement envoyez un e-mail à l'adresse [EMAIL PROTECTED]
-~----------~----~----~----~------~----~------~--~---