Trasformare un hash in opzioni per gsub

Ciao a tutti,

Per inviare delle email utilizzo gsub per modificarne il contenuto.
Attualmente utilizzo un set di variabili limitato e predefinito che
allego all’indirizzo (nome,cagnome,email,var1,var2,var3,var4,var5) e poi
effettuo la sostituzione con questo semplice helper:

def usertext(text, address)
return
text.gsub(/({email}|{name}|{surname}|{var1}|{var2}|{var3}|{var4}|{var5})/,
“{email}” => address.email, “{name}” => address.name, “{surname}” =>
address.surname, “{var1}” => address.var1, “{var2}” => address.var2,
“{var3}” => address.var3, “{var4}” => address.var4, “{var5}” =>
address.var5)

end

La mia idea sarebbe di rendere le opzioni dinamiche mettendole in una
tabella collegata

address has_many options

La stringa di ricerca la genero facilmente con un metodo ad hoc nel
modello address ma non riesco a trovare una soluzione per le
sostituzioni o meglio: riesco ad ottenere un hash con le coppie chiave
valore ( {"{var1}" => “val1”, …} ) ma gsub non mi accetta un hash
unico ne pretende vari separati e non capisco come farlo…

Qualche idea?

Andrea

Usa l’interpolazione via hash.

Usi %{foo} come placeholder, poi passi l’hash con i valori da
sostituire.

– Simone

2012/7/12 Andrea R. [email protected]

“{email}” => address.email, “{name}” => address.name, “{surname}” =>


Posted via http://www.ruby-forum.com/.


Ml mailing list
[email protected]
http://lists.ruby-it.org/mailman/listinfo/ml


Simone C.
Application Developer

Site & Blog: http://www.simonecarletti.com/
LinkedIn: http://linkedin.com/in/weppos
Skype: weppos

Risolto…

Il problema non era nel hash: gsub interpreta indistintamente sia vari
array separati da una virgola che un singolo array con tutto.

Es:

t.gsub(%r{reg}, “{uno}” => “value1”, “{due}” => “value2”) ==
t.gsub(%r{reg}, {"{uno}" => “value1”, “{due}” => “value2”}) ==
t.gsub(%r{reg}, address.funzione_complessa_che_gerera_hash)

Posso quindi generarmi tranquillamente l’hash dal modello e passarglielo
tutto insieme.

Alla fine era piu` facile del previsto…
grazie

P.S. X Simone, Non ho capito la storia dell’interpolazione… Alla fine
ottieni sempre una stringa no?

S, ma l’implementazione necessaria molto pi ridotta.
Alla fine non ti serve gsub quando la funzionalit presente di serie in
String.

2012/7/12 Andrea R. [email protected]

P.S. X Simone, Non ho capito la storia dell’interpolazione… Alla fine
ottieni sempre una stringa no?


Simone C.
Application Developer

Site & Blog: http://www.simonecarletti.com/
LinkedIn: http://linkedin.com/in/weppos
Skype: weppos