Date e valuta in italiano

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 serve

Per 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
end

Se 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.

  1. Ricordati di mettere comunque un validatore sul campo.

Scusate, segnalo anche questa gemma che pu forse tornare utile

http://money.rubyforge.org/


Riccardo

L’esperienza quello che ottieni quando, non ottieni quello che
desideri.