Lorsqu'on enregistre des dates dans nos bases de données, le format utilisé pour les stocker n'est pas forcement très accessible à l'utilisateur de notre application. Il nous faut donc faire quelques manipulations afin d’offrir à l'utilisateur une expérience plus agréable. Pour cela nous allons utiliser la fantastique gem I18n que j'aime par dessus tout tant pour sa simplicité de mise en place et d'utilisation que pour sa puissance (surtout la pluralisation).

Pour commencer on va ajouter dans nos fichiers de langue (fr.yml par exemple) les lignes suivantes qui vont nous permettre d'obtenir le bon format selon la langue demandée.

time:
  formats:
    default: "%d/%m/%Y %H:%M:%S"
date:
  formats:
    default: "%d/%m/%Y"

Pour l'affichage de nos données via Ruby, nous pouvons maintenant utiliser le helper I18n.l :

> I18n.l Time.now
=>18/10/2013 12:32:12
# ou via avec ActiveRecord
> I18nl User.last.last_sign_in_at
=> 10/02/2013 08:01:20

Nous allons donc l'utiliser afin de créer une variable _DATE_FORMAT pour notre JavaScript. Dans la partie header du fichier application.html.erb :

<%= javascript_tag "var _DATE_FORMAT = '#{I18n.t('date.formats.default')}';" %>

De cette façon il est possible de créer une fonction getToday nous retournant la date au format voulu :

function getToday(){
  return new Date().format(_DATE_FORMAT);
}
// Il est donc aussi simple de passer le format à notre plug-in datepicker (ici avec mootools)
new Picker.Date(this.el.getElement('.date'), {
  positionOffset: { x: 5, y: 0 }
  ,pickerClass: 'datepicker_bootstrap'
  ,useFadeInOut: !Browser.ie
  ,format: _DATE_FORMAT
});

Publié dans les catégories suivantes

ruby
comments powered by Disqus

Téléphone

+33 637 700 504

Adresse

Bordeaux, 33300
France