# Jscalendar (formato italia) in rails

**URL:** <https://www.ruby-forum.com/t/jscalendar-formato-italia-in-rails/109011>\
**Category:** IT\
**Created:** [July 10, 2007, 4:50pm UTC](https://www.ruby-forum.com/t/jscalendar-formato-italia-in-rails/109011 "2007-07-10T16:50:54Z")\
**Posts on this page:** 4\
**Page:** 1

<div class="post-metadata">

**Author:** ![Massimiliano\_Balest](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/m/c5a1d2/32.png) [@Massimiliano\_Balest](https://www.ruby-forum.com/u/Massimiliano_Balest)\
**Post date:** [July 10, 2007, 4:50pm UTC](https://www.ruby-forum.com/t/jscalendar-formato-italia-in-rails/109011/1 "2007-07-10T16:50:54Z")

</div>

ho sprecato un giorno su sta menata…  
però è l’unico modo per imparare. sbattere la testa.(mamma che sintassi  
però)  
vi presento l’utilizzo.  
magari mi date consigli x migliorare.  
magari non vi interessa. do’ il mio contrib.

1. 

uso il plugin datetime\_toolbocks. ho seguito la procedura. semplice.  
ometto.  
2)  
nella view al posto di:

\<%= date\_select ‘attivita’, ‘inizio’ %\>  
\<%= date\_select ‘attivita’, ‘fine’ %\>

\<%= toolbocks\_date\_select :attivita, :inizio, { :format =\> ‘dd/mm/yyyy’,  
:autoRollOver =\> false, :value =\> date\_eng\_to\_ita(@attivita[:inizio]) ,  
:help =\> false } %\>  
\<%= toolbocks\_date\_select :attivita, :fine, { :format =\> ‘dd/mm/yyyy’,  
:autoRollOver =\> false, :value =\> date\_eng\_to\_ita(@attivita[:fine]) ,  
:help  
=\> false } %\>

qui ho usato un metodo che ho inserito nell’application helper. la data  
mi  
arriva in formato inglese (campo date oracle). la trasformo in italiano.

def date\_eng\_to\_ita(date)  
date.strftime("%d/%m/%Y")  
end

1. 

invio il form.

prima di far arrivare i dati al model (la data passata da jscalendar non  
arriva al model per via del formato diverso [penso])  
… converto in inglese  
così.  
nel controller

sul create

param = params[:attivita]  
param[:inizio] = date\_ita\_to\_eng param[:inizio]  
param[:fine] = date\_ita\_to\_eng param[:fine]  
@attivita = Attivita.new(param)

qui uso un metodo che ho messo nell’application controller.

def date\_ita\_to\_eng(str)  
ret = Date.strptime(str, “%d/%m/%Y”)  
ret.strftime("%Y-%m-%d")  
end

sull’update cambia niente.

che dite? è corretto?  
metodo nell’helper per la view  
metodo nell’application controller per il controller

avete già usato il jscalendar per progetti rails?

ciao e grazie per eventuali migliorie e consigli.

---

<div class="post-metadata">

**Author:** ![Massimiliano\_Balest](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/m/c5a1d2/32.png) [@Massimiliano\_Balest](https://www.ruby-forum.com/u/Massimiliano_Balest)\
**Post date:** [July 11, 2007, 8:30am UTC](https://www.ruby-forum.com/t/jscalendar-formato-italia-in-rails/109011/2 "2007-07-11T08:30:54Z")

</div>

Ciao io ho perso la maggior parte del tempo a capire come cavolo  
formattare le date 😉

E la soluzione Ã¨ molto simile alla tua, nelle viste ho usato  
data.strftime("%d-%m-%Y") direttamente senza creare un helper mentre per  
il passaggio inverso ho usato Time.parse(data.to\_s).  
Io come DB ho usato MySql e quando salvavo senza time.parse non riusciva  
ad unificare con i campi del db.

Ho provato con le solite storie del globalize e poi con altri codici nel  
application che ti convetono direttamente le date … ma spesso non  
funzionavano, altre volte funzionavano nelle viste, ma poi quando  
salvavo nel db dovevo rifare la conversione.

ciao spero di esserti stato utile.

---

<div class="post-metadata">

**Author:** ![Massimiliano\_Balest](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/m/c5a1d2/32.png) [@Massimiliano\_Balest](https://www.ruby-forum.com/u/Massimiliano_Balest)\
**Post date:** [July 11, 2007, 12:23pm UTC](https://www.ruby-forum.com/t/jscalendar-formato-italia-in-rails/109011/3 "2007-07-11T12:23:26Z")

</div>

Il 11/07/07, Roger 83 [removed\_email\_address@domain.invalid](mailto:removed_email_address@domain.invalid) ha scritto:

> Ciao io ho perso la maggior parte del tempo a capire come cavolo  
> formattare le date 😉

come hai risolto il fatto che scrivendo una stringa non data

ArgumentError in AttivitaController#create

invalid date

ho provato un plugin per validare la data sul model ma non mi sembra  
funzionare… o meglio a me non funziona.

---

<div class="post-metadata">

**Author:** ![Massimiliano\_Balest](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/m/c5a1d2/32.png) [@Massimiliano\_Balest](https://www.ruby-forum.com/u/Massimiliano_Balest)\
**Post date:** [July 11, 2007, 3:20pm UTC](https://www.ruby-forum.com/t/jscalendar-formato-italia-in-rails/109011/4 "2007-07-11T15:20:45Z")

</div>

era una “niubbiata”.  
non saper ancora intercettare gli errori!  
vabbe mi sa che mi devo leggere un po’ di programming ruby prima di  
altri  
esperimenti!

ho risolto  
così.quando l’utente scrive sul textfield “testopuro o data non valida”  
prima di passare i dati al model parso il parametro  
così.  
def date\_ita\_to\_eng(str)  
begin  
ret = Date.strptime(str, “%d/%m/%Y”)  
ret.strftime("%Y-%m-%d")  
rescue ArgumentError  
ret = Date.today  
ret.strftime("%Y-%m-%d")  
end  
end

bello il return con la data odierna! bello proprio.

qualcuno cantava  
“por la carretera”
