Ho un form con campi per l’inserimento di date e valori rappresentanti
euro.
L’inserimento delle date lo faccio in un campo di tipo string e
utilizzo jquery-ui, mi visualizza il calendario attraverso il quale
l’utente seleziona la data.
Al momento della selezione nel campo viene inserito ad esempio,
24/04/2012.
Nel db viene memorizzato 2012-04-24 ed e’ questa stessa
rappresentazione che vedo nel capo string quando richiamo il form, ad
esempio per una modifica.
Vorrei che l’utente non si ritrovasse 2012-04-24 ma 24/04/2012 o
24-04-2012, insomma la data in formato italiano.
Anche per i valori rappresentanti euro l’utente e’ costretto ad
inserire i dati separando i centesimi con il punto anziche’ con la
virgola, e’ corretto perche’ tali valori sono indicati come decimal ma
per l’utente e’ piu’ normale separare i decimali utilizzando la
virgola.
L’unico modo sarebbe quello di intercettare i valori e convertirli in
qualche modo?
Il 25/04/12 13:19, Mauro ha scritto:
Anche per i valori rappresentanti euro l’utente e’ costretto ad
inserire i dati separando i centesimi con il punto anziche’ con la
virgola, e’ corretto perche’ tali valori sono indicati come decimal ma
per l’utente e’ piu’ normale separare i decimali utilizzando la
virgola.
L’unico modo sarebbe quello di intercettare i valori e convertirli in
qualche modo?
Stai parlando di Rails?
Per le date puoi usare la <%=l MyModel.date %>, dai un’occhiata qui:
In generale I18n quello che ti serve
Per la moneta esiste il metodo number_to_currency
2012/4/25 Tommaso V. [email protected]:
rappresentazione che vedo nel capo string quando richiamo il form, ad
Stai parlando di Rails?
Per le date puoi usare la <%=l MyModel.date %>, dai un’occhiata qui:
Rails Internationalization (I18n) API — Ruby on Rails Guides
In generale I18n quello che ti servePer la moneta esiste il metodo number_to_currency
Si lo so, ma supponi di avere un campo in un form dove l’utente deve
inserire un valore corrispondente alla valuta 1.000.022,12 euro.
L’utente e’ costretto ad inserire 1000022.12, mentre si aspetta di
poter inserire 1000022,12.
Poi certo, il valore lo formatto con l’helper number_to_currency in
fase di visualizzazione.
2012/4/26 Alessio C. [email protected]:
poter inserire 1000022,12.
to_write = raw
endSe usi una colonna decimal non ti serve di moltiplicare e dividere per 100.
Ricordati di mettere comunque un validatore sul campo.
Si vedo che fai una gsub, cosi’ avevo pensato io, la mia richiesta era
volta a capire se ci fosse qualche soluzione piu’ immediata sia per il
problema della valuta sia per quello delle date se uso campi string e
non l’helper date_select.
poter inserire 1000022,12.
Poi certo, il valore lo formatto con l’helper number_to_currency in
fase di visualizzazione.
Non so se esiste un metodo rapido per farlo, io avevo un’applicazione in
cui dovevo tenere dei prezzi su DB in formato intero (in centesimi) ma
mostrarli all’utente come euro e con la virgola.
class Item < ActiveRecord::Base
PRICE_REGEXP = /^\d+(.\d{1,2})?$/
def price=(value)
raw = value.to_s.gsub(’,’,’.’).strip
to_write = raw
if raw =~ PRICE_REGEXP
to_write = (raw.to_f * 100).to_i
end
write_attribute(:price, to_write)
end
def price
p = read_attribute(:price)
sprintf("%.2f", p/100.0).gsub(’.’, ‘,’) unless p.nil?
end
end
Se usi una colonna decimal non ti serve di moltiplicare e dividere per
100. Ricordati di mettere comunque un validatore sul campo.
Alessio
Alessio “nolith” Caiazza
il sapere umano appartiene al mondo.
GPG 440C5437
On Thu, Apr 26, 2012 at 9:17 AM, Alessio C. [email protected]
wrote:
poter inserire 1000022,12.
- Ricordati di mettere comunque un validatore sul campo.
Scusate, segnalo anche questa gemma che pu forse tornare utile
–
Riccardo
L’esperienza quello che ottieni quando, non ottieni quello che
desideri.