Question

Dans Rails 3, est-il un moyen d'utiliser datetime_select et heures d'affichage montrant 12 heures les options am / pm plutôt que les options 24 heures?

Était-ce utile?

La solution

Au cas où quelqu'un trébuche sur cette question, la réponse des rails 3.2 est:

<%= f.datetime_select :attribute_name,  
                       ampm: true %>  

Autres conseils

Voici la méthode que j'ajouté à ma classe d'aide:

def am_pm_hour_select(field_name)
select_tag(field_name,options_for_select([
  ["1 AM", "01"],["2 AM", "02"],["3 AM", "03"],["4 AM", "04"],["5 AM", "05"],["6 AM", "06"],
  ["7 AM", "07"],["8 AM", "08"],["9 AM", "09"],["10 AM", "10"],["11 AM", "11"],["12 PM", "12"],
  ["1 PM", "13"],["2 PM", "14"],["3 PM", "15"],["4 PM", "16"],["5 PM", "17"],["6 PM", "18"],
  ["7 PM", "19"],["8 PM", "20"],["9 PM", "21"],["10 PM", "22"],["11 PM", "23"],["12 AM", "0"]]))
end

Ensuite, je branché cette méthode dans mon point de vue:

<%= am_pm_hour_select "eventtime[start(4i)]" %>  

Il semblait faire l'affaire, mais s'il y a une façon plus idiomatiques de le faire, je serais intéressé d'entendre.

(mise à jour: bugs corrigés trouvés par Thucydide)

Le code ci-dessous traite de manière incorrecte minuit et midi: il appelle midi AM '12 », qui est minuit; il appelle minuit PM '12, » qui est midi.

En outre, le code doit utiliser 0h00 comme minuit, ce qui est la norme internationale.

Correction:

def am_pm_hour_select(field_name)
select_tag(field_name,options_for_select([
    ["1 AM", "01"],["2 AM", "02"],["3 AM", "03"],["4 AM", "04"],["5 AM", "05"],["6 AM", "06"],
    ["7 AM", "07"],["8 AM", "08"],["9 AM", "09"],["10 AM", "10"],["11 AM", "11"],["Noon", "12"],
    ["1 PM", "13"],["2 PM", "14"],["3 PM", "15"],["4 PM", "16"],["5 PM", "17"],["6 PM", "18"],
    ["7 PM", "19"],["8 PM", "20"],["9 PM", "21"],["10 PM", "22"],["11 PM", "23"],["Midnight", "0"]]))
end
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top