2009-12-11 21 views
3

Est-il possible d'appliquer le formatage strftime à la valeur d'un champ de saisie de texte à l'aide d'un assistant Rails text_field? Dans le formulaire que j'utilise pour créer ou modifier un enregistrement, j'ai un champ de saisie de texte qui est rempli par une variante de la javascript de calendardateselect. Je clique sur le champ de texte et un petit calendrier apparaît. Après avoir sélectionné l'année, le mois, le jour et l'heure, le calendrier disparaît et ce qui reste dans la saisie de texte est une représentation textuelle de la date. C'est ce que je vois si je vais aussi éditer le disque.format texte_field helper?

Je voudrais modifier la façon dont cette date est affichée dans le champ de saisie de texte. Dans d'autres modèles où cette date est affichée, je peux utiliser strftime, mais je ne sais pas comment (ou même si c'est possible) pour formater la valeur d'un champ de saisie de texte.

Merci.

Steve

Répondre

6

Option 1: Si vous avez un format de temps par défaut pour votre application, text_field va utiliser. Par exemple, vous pourriez avoir un config/initializers/time_formats.rb contenant les éléments suivants:

Time::DATE_FORMATS[:default] = '%m/%d/%Y %I:%M %p' 

Option 2: Vous pouvez remplacer value du text_field en utilisant strftime directement. Par exemple:

<%- scheduled_at_string = form.object.scheduled_at && form.object.scheduled_at.strftime("%m/%d/%Y") -%> 
<%= form.text_field :scheduled_at, :value => scheduled_at_string %> 

(Vous pouvez nettoyer ce avec une aide.)

0

Got, mais a dû utiliser un élément d'entrée HTML classique, et non l'assistant Rails:

<input type="text" id="assignment_starts_at" name="assignment[starts_at]" class="jqueryCDS" size="30" value="<%= @assignment.starts_at.strftime('%A, %b %e, %G - %I:%M %p') if @assignment.starts_at %>" />