Il subject non è dei migliori, ma non sapevo come scriverlo, mi è
capitata una cosa strana:
In rails ricevo da una form una stringa (contenente una data in formato
GGMMAAAA) che viene inserita in un db mysql (e fin quì tutto ok) io ho
bisogno di usare la stessa data(piu che altro la stringa corrispondente)
sia nel formato inserito, sia in formato MMGG.
Allora cosa ho fatto, nel mio controller ho scritto le seguenti cose:
data_localcopy = @m.header.data
dataMMGG = data_localcopy.slice!(0…3).scan(/.{2}/).reverse.to_s
Ora il problema assurdo è che la data MMGG va benissimo, se però piu
avanti nel programma provo a visualizzare @m.header.data adesso ritorna
solo AAAA.
E anche in console ho lo stesso comportamento…
Loading development environment (Rails 2.3.2)
m=Manifest.find(id=3)
=> #<Manifest id: 3, nome: “OSHIMANA”, created_at: “2009-08-12
07:40:22”, updated_at: “2009-08-12 07:40:22”>
m.header.data
=> “12082009”
d=m.header.data
=> “12082009”
d2=m.header.data
=> “12082009”
dataMMGG = d.slice!(0…3).scan(/.{2}/).reverse.to_s
=> “0812”
d
=> “2009”
d2
=> “2009”
Sbaglio io qualcosa? c’è qualcosa che non capisco nell’assegnare le
variabili? in fin dei conti io non vado neanche a manipolare
direttamente @m.header.data ma assegno il suo valore ad un’altra
variabile
Ciao Luca
Tutti i metodi che finiscono col ‘!’ (ad esempio slice!) modificano
l’oggetto che li invoca; es:
str = “ciao”
str.gsub!(“o”,“oooo”)
puts str
ciaoooo
inoltre ti suggerisco di usare Date.strptime per fare un lavoro più
pulito…
Date.strptime(“10122009”,“%d%m%Y”).strftime(“%m%g”)
Sandro
2009/8/12 Luca C. [email protected]
Luca C. wrote:
data_localcopy = @m.header.data
dataMMGG = data_localcopy.slice!(0…3).scan(/.{2}/).reverse.to_s
Sbaglio io qualcosa? c’è qualcosa che non capisco nell’assegnare le
variabili? in fin dei conti io non vado neanche a manipolare
direttamente @m.header.data ma assegno il suo valore ad un’altra
variabile
prova
data_localcopy = @m.header.data.clone
Sandro P. wrote:
Ciao Luca
Tutti i metodi che finiscono col ‘!’ (ad esempio slice!) modificano
l’oggetto che li invoca; es:
str = “ciao”
str.gsub!(“o”,“oooo”)
puts str
ciaoooo
Doh! è vero!!!
che idiota che sono… la cosa bella è che me ne sono accorto solo ora
di averla scritta in quel modo (e oltretutto non ricordo piu neanche
perchè… ho proprio bisogno di un pò di vacanza…
inoltre ti suggerisco di usare Date.strptime per fare un lavoro pi�
pulito…
Date.strptime(“10122009”,"%d%m%Y").strftime("%m%g")
Questo volevo vederlo successivamente, per adesso come l’ho scritta io
mi torna ancora meglio, cmq grazie per la dritta…
E soprattutto grazie per avermi fatto notare una cosa che non riuscivo
assolutamente a vedere pur avendola in bella vista! sono proprio
stordito…
Luca