7
votes

Modifier le format de temps de rubis par défaut

Je continue à avoir à ajouter ".strftime ("% h:% m ")" à tout ce qui affiche une heure dans mon projet Rails. J'ai une heure de départ et une heure de fin de chaque objet de concert, je dois donc ajouter ".strftime ("% h:% m ")" Chaque fois que je veux afficher ces temps.

Notez que je ne demande pas de changer le format de date. La date a l'air bien comme il est (comme mm / dd / aaaa).

Quel est le meilleur moyen de contourner cela? Existe-t-il un moyen de définir le format horaire par défaut?

(Je suis sûr que ce n'est qu'une chose rubis, mais je suis un débutant, donc je ne suis pas sûr.)


2 commentaires

Permettez-moi de suggérer de ne pas utiliser MM / DD / AAAA pour votre format de date, à moins que votre site ne soit très clairement utilisé que pour les personnes aux États-Unis. C'est souvent ambigu (par exemple 01/02/2011) et une grande partie du reste du monde utilise dd mm Aaaa. Mieux vaut utiliser un nom (éventuellement court) pour le mois.


Noté! Personnellement, j'utilise personnellement jj / mm / aaaa même malgré être dans les États-Unis, mais ce projet est pour une très petite fête, qui sont toutes des États-Unis et utilisent la Convention MM / DD.


4 Réponses :


2
votes

Ruby On Rails contient des préréglages intégrés pour la mise en forme Date CODE> et TIME CODE> INSTANCEMENTS. Voici ce qu'ils sont pour temps code> sur ma machine:

>> Time::DATE_FORMATS[:mine] = "%H:%M"
=> "%H:%M"
>> Time.now.to_s(:mine)
=> "15:28"


2 commentaires

Où devrais-je mettre "Time :: DATE_FORMATS [: MINE] ="% H:% M ""? Quelle version de Ruby / Rails utilisez-vous? Je reçois "NameError: Durée constante ininitialisée :: DATE_FORMATS" en IRB lorsque j'essaie ça.


J'utilise des rails 3.0.1 dans l'application que j'ai testé. Vous devez prendre la suggestion de @ Coreyward pour l'ajouter à la configuration locale.



1
votes

Vous pouvez créer une fonction personnalisée dans votre fichier Application_Helper.rb. Peut-être que quelque chose comme: xxx

Je ne sais pas si cela est la meilleure pratique, mais cela devrait bien fonctionner.


0 commentaires

17
votes

Puisque vous utilisez des rails, profitez du support I18N: http://guides.rubyonrails.org/i18n.html#adding-date-time-formats xxx

puis lorsque vous appelez i18n.l temps.now < / code> ou <% = l temps.now%> , il utilisera ce format automatiquement.


3 commentaires

Donc, il se manquera peut-être quelque chose, mais j'ai ajouté que dans le fichier YML, et je n'ai pas encore trouvé de changement. Je couronne des rails 2.3.8, et je me souviens d'avoir des problèmes d'internationalisation auparavant avec le livre agile. La seule façon dont je peux obtenir des traductions utilise la méthode T. D'après ce que j'ai lu, les traductions doivent être automatiques. Que pourrais-je me tromper?


Cela pourrait sembler idiot, mais avez-vous redémarré le serveur? Je ne pense pas que les fichiers de traduction soient rechargés automatiquement. Si tel est le cas, vérifiez la syntaxe. Yaml est très particulier sur l'indentation. Enfin, essayez de spécifier le "défaut" explicitement pour vous assurer que les documents ne sont pas incorrects dans ce comportement.


Hmm, j'ai essayé de redémarrer le serveur, mais cela ne semble pas être le problème. Je ne suis pas sûr de ce que vous entendez en précisant explicitement la valeur par défaut, bien que ...



0
votes

J'utilise un initialiseur: config / initialiseurs / time_formats.rb qui contient: xxx

alors j'utilise l'heure.Me_s.à_s (: app_date), etc. basé sur la façon dont je veux afficher ce. Vous pouvez ajouter TIME :: DATE_FORMATS [: DEFAULT] = "% h:% m" pour accomplir ce que vous essayez de faire. Ce n'est pas internationalisé cependant - pour cela, la réponse de Coreyward est probablement meilleure.


0 commentaires