Format DateTime dans la Zone de Texte dans les Rails
Est-il un moyen facile pour formater l'affichage d'un DateTime
valeur dans un des Rails de vue?
Par exemple, si je fais quelque chose comme:
<%= text_field :my_object, :start_date %>
et, pour n'afficher que la partie Date de la :start_date
(c'est à dire je veux cacher la partie du temps), est-il un moyen de formater le :start_date
chaîne à l'intérieur de la vue telle qu'elle fonctionne pour la création de nouveaux my_object
articles et mise à jour de nouvelles my_object
articles?
Juste une précision:
Faire
<%= text_field
:my_object,
:start_date,
:value => @my_object.start_date.strftime('%m/%d/%Y') %>
œuvres magnifiquement lorsque l'objet existe déjà (c'est à dire sur les mises à jour), cependant, lors de la création d'un nouveau point, depuis date_debut sera initialement nulle, le point de vue lèvera une erreur
while evaluating nil.strftime
Vous devez vous connecter pour publier un commentaire.
Quelques excellentes suggestions ici, cependant, dans les cas où vous voulez que votre champ de texte au format date une manière spécifique (dire que vous êtes à l'intégration avec un javascript sélecteur de date), et vous avez à traiter avec nils, je pense qu'il suffit de faire une mineure modifier à votre méthode existante ferait l'affaire:
start_date
à la date actuelle dans l'objet, de sorte questart_date
ne serait jamaisnil
en premier lieu.Je pense, de trois façons:
1) Création d'une nouvelle méthode sur le modèle de format de votre date, toutefois vous en avez besoin pour être
2) la Création d'une méthode d'assistance que ferait la même chose
3) Avez-vous essayé de faire:
Si votre formulaire est associé à un objet, (quelque chose comme
<% form_for(:object) do |f| %>
), vous devez utiliser<%= f.text_field :start_date, :value => f.object.start_date.to_s(:date_format) %>
ensuite, vous pouvez inscrire votre
:date_format
dans config/environment.rbNe savez pas pourquoi vous voulez le faire, mais j'espère que c'est pour fins de présentation seulement.
:value => (f.object.start_date.to_s(:date_format) unless f.object.start_date.nil?)
Dans mon application_helper.rb j'ai mis
En tout modifier.html.erb fichier de la vue avec un datepicker de jQuery j'utilise ensuite:
the_date
est nul?nice_date_form
à quelque chose commereturn (the_date ? the_date.strftime('%d-%m-%Y') : '')
. Ensuite, vous devriez être en mesure de supprimer la condition de la vue.Cela peut être manipulé Sèchement au niveau du modèle en utilisant les Rails fournis
<attribute>_before_type_cast
méthode variante. Rails utilise déjà cette méthode pour le faire ce type de mise en forme, de sorte que nous sommes juste d'écraser la valeur par défaut. Par exemple:De cette façon, partout où vous disposez d'un champ de texte pour le Monmodèle#date_debut champ vous obtenez la mise en forme "libre".
si vous ne souhaitez pas saisir la date dans un champ de texte, mais de moins en moins enclins à faire des erreurs sur le terrain, vous pouvez utiliser le ActionView::Assistants::DateHelper, select_date(). voir Accéder à date() envoyer des variables à partir de la date d'aide dans des rails ici sur DONC sur la façon de traiter les valeurs de retour.
Dans un helper
Puis dans la vue
Ici
l
est un rails helper (I18n.l
) qui peut être paramètres régionaux spécifiques et peut prendre un format. Exemples: