2010-03-14 10 views
20

J'aimerais que mes dates soient au format mm/jj/an dans les champs de texte. Cependant, ils affichent actuellement comme 2010-03-26.Format de date Rails dans le champ de formulaire

Y a-t-il un paramètre global que je peux définir pour changer cela?

J'ai essayé ce qui suit, qui semble mettre à jour la méthode .to_s, mais les champs de formulaire restent les mêmes.

ActiveSupport::CoreExtensions::Date::Conversions::DATE_FORMATS.merge!(:default => '%m/%d/%Y') 

Merci

Répondre

2

Je ne sais pas s'il y a un paramètre global pour que partout, je fais juste dans le ERB. Alternativement, vous pouvez factoriser ceci dans une fonction d'aide pour le rendre DRY.

32

Vous devez enregistrer le format default dans un initialiseur.

Ajoutez cette ligne au config/initializers/date_time_formats.rb.

Date::DATE_FORMATS[:default] = '%m/%d/%Y' 

# if you want to change the format of Time display then add the line below 
Time::DATE_FORMATS[:default]= '%m/%d/%Y %H:%M:%S' 

# if you want to change the DB date format. 
Time::DATE_FORMATS[:db]= '%m/%d/%Y %H:%M:%S' 

Maintenant dans le script\console permet de tester le format.

>> Date.today.to_s 
=> "03/14/2010" 

>> Time.now.to_s 
=> "03/14/2010 13:20:55" 
+0

Cela fonctionne pour moi. De plus, le fait de valider rapidement les résultats dans script \ console a été utile. Je vous remercie. – tstyle

+0

Fonctionne bien avec 'Date' et' Time'. Et les valeurs de base de données? –

+0

Utilisez 'Time :: DATE_FORMATS [: db]' pour définir le format DB. –

0

Je sais c'est une question terriblement vieux, mais vous pouvez utiliser date_field au lieu de text_field. Peut-être que ce n'était pas une option lorsque vous avez posé cette question à l'origine.

Il affiche la date dans mm/dd/yyyy, ce qui est votre intention.

<%= date_field :column_name %>

0

L'assistant formulaire date_select fournit un sélecteur de date "os nus".