Salut et Merci à tout les 2.
En effet, je vais plutot mettre des points maintenant, c'est vrai que c'est
plus lisible, même si le fait d'utiliser les [:xx] les faisait apparaitre en
gros rouge dans mon éditeur donc ça sautait bien aux yeux.
Sinon merci beaucoup à toi Michel pour cette aide bien précieuse.
En effet je n'avait pas bien appréhendé la chose. J'étais sur cette piste
mais je n'avais pas du tout .
J'ai donc modifié et ça fonctionne parfaitement.
Merci énormément.
Le 07/08/07, Michel Belleville <[EMAIL PROTECTED]> a écrit :
>
> 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]
-~----------~----~----~----~------~----~------~--~---