Ho questo:
def crea
@patient = Patient.new(params[:patient])
@patient.cognome = @patient.cognome.upcase ****
@patient.nome = @patient.nome.upcase ****
@patient.codice_fiscale = @patient.codice_fiscale.upcase ***
....
if @patient.save
flash[:notice] = 'Paziente creato.'
redirect_to :action => 'list'
else
render :action => 'new'
end
end
Invece di usare le poco efficienti ed eleganti linee ***
posso usare un, per esempio, each per ciclare tutti i campi e renderli
maiuscoli?
Grazie
On Sep 13, 2006, at 2:45 PM, Biagio M. wrote:
flash[:notice] = 'Paziente creato.'
redirect_to :action => 'list'
else
render :action => 'new'
end
end
Invece di usare le poco efficienti ed eleganti linee ***
posso usare un, per esempio, each per ciclare tutti i campi e renderli
maiuscoli?
class Patient < ActiveRecord::Base
def before_save
@cognome.upcase!
@nome.upcase!
@codice_fiscale.upcase!
end
end
anche se il motivo per cui vuoi girare tutto in maiuscolo nel db mi
sfugge totalmente
Stefano C. wrote:
class Patient < ActiveRecord::Base
def before_save
@cognome.upcase!
@nome.upcase!
@codice_fiscale.upcase!
end
end
Il problema è evitare le ripetizioni di linee
@cognome.upcase!
@nome.upcase!
@codice_fiscale.upcase!
ed usare un ciclo.
anche se il motivo per cui vuoi girare tutto in maiuscolo nel db mi
sfugge totalmente
l’upcase è un esempio. Potrebbe essere qualsiasi metodo. L’importante è
non ripeterlo per ogni campo su varie linee di codice
Grazie per la risposta
Chiaro Scuro wrote:
una cosa del genere intendi?
[cognome, nome, codice_fiscale].each { |field| field.upcase! }
nel caso di pochi elementi trovo pi� elengante scriverlo in forma estesa
per�.
E allora lasciamo da parte l’eleganza e riformuliamo il problema:
Come faccio a evitare le ripetizioni ?
Si tratta di capire, almeno per me che non ho esperienza con questo
linguaggio,
come lavorare con questa cosa qui sotto:
@patient = Patient.new(params[:patient])
tipo @params[“patient”].each {… .upcase}
Ripeto, non bisogna guardare al semplice esempio che ho fatto.
Ciao
una cosa del genere intendi?
[cognome, nome, codice_fiscale].each { |field| field.upcase! }
nel caso di pochi elementi trovo più elengante scriverlo in forma estesa
però.
On 9/13/06, Biagio M. [email protected] wrote:
Il problema è evitare le ripetizioni di linee
–
Chiaroscuro
Liquid Development: http://liquiddevelopment.blogspot.com/
On Sep 13, 2006, at 4:58 PM, Biagio M. wrote:
E allora lasciamo da parte l’eleganza e riformuliamo il problema:
Una soluzione non elegante NON e’ una soluzione
Ripeto, non bisogna guardare al semplice esempio che ho fatto.
Ciao
E allora fai un esempio non semplice
Cmq ActiveRecord#attributes ritorna una hash con tutti gli attributi
e i loro valori (clonati).
Nel tuo caso:
x.attributes.each do |attr_name, attr_value| x.send("#{ attr_name }
=", attr_value.upcase) end
Ovviamente i casi in cui puoi fare la stessa operazione
indifferentemente su tutti i campi
sono piuttosto rari…
Stefano C. wrote:
Una soluzione non elegante NON e’ una soluzione
Elegante qui sta per sintetica.
x.attributes.each do |attr_name, attr_value| x.send("#{ attr_name }
=", attr_value.upcase) end
Questo è quello che cercavo.
Ho provato con
@params[“patient”].each ecc…
@patient.attributes.each ecc…
ma mi serviva questo attr_value.
Dove trovo la documentazione della tua linea di codice? (per attributes)
non sono stato c…apace di trovare quello che mi serviva.
Comunque grazie mille
Ciao
On 9/13/06, Biagio M. [email protected] wrote:
Dove trovo la documentazione della tua linea di codice? (per attributes)
non sono stato c…apace di trovare quello che mi serviva.
Ciao Biagio,
http://api.rubyonrails.org/ ti indica che il metodo ritorna un Hash.
‘ri Hash#each’ ti spiega come usare il metodo each.
ciao,
Antonio