Y a-t-il un temps convivial pour les rails 3? L'assistant de formulaire Time_Select par défaut vous donne des heures [00-23], des minutes [00-59] et éventuellement des secondes [00-59]. Une liste déroulante des heures 0-23 est assez frustrante pour ceux d'entre nous qui ne sont pas sur le temps militaire. Une solution conviviale afficherait les heures 1-12 et une liste déroulante EXTRA AM / PM. P>
Y a-t-il une option ou un plugin séparé pour gérer cela? Je ne peux pas être la première personne à vouloir cela, mais je n'ai trouvé aucune solution. P>
merci! p>
5 Réponses :
Pour ce type d'usage, je vous recommande d'utiliser JQuery UI. C'est bien plus convivial p>
Ugh, choisir une heure / minute avec un curseur est peut-être le pire choix d'interface utilisateur de tous les temps.
À ce moment, il ne fonctionne pas sur des périphériques tactiles sans autres plugins.
Une chose simple que vous puissiez faire est de convertir l'armée 0..23 à la standard 12 am, 11m,2am..10pm.11pm.
Cela fonctionne bien pour ma situation - je viens de choisir l'heure - mais Ce n'est pas idéal, j'admets, avec l'AM / PM dans l'heure de descente. p> puis dans JavaScript (cela peut probablement être plus propre) p> function convert_hour(hour_string) {
if (hour_string.substring(0,1) == 0) {
hour_string = hour_string.substring(1);
}
// Funny '08' parses to 0, but '07' parses to 7. Removing leading 0 above fixes.
var mh = parseInt(hour_string)
if (!isNaN(mh)) {
var nh = mh % 12
if (nh == 0) { nh = 12 }
if (mh < 12) {
nh = nh + 'am'
} else {
nh = nh + 'pm'
}
return nh
}
return hour_string
}
Je ne connais pas une construction d'assistance pour exactement ce que vous voulez. Je vous suggère de construire un, et de la partager! Vous ne voulez probablement pas que le premier élément de la liste déroulante soit 12am non plus, ce qui devrait être une option de configuration.
Également, si 12 heures est 0 ou 24 doit être configurable aussi. P>
Voici un base à l'aide de vanille Il affiche 12 heures de temps sur votre utilisateur et publie un entier de 24 heures sur votre serveur. P> MISE À JOUR H2> J'en ai eu besoin de toute façon, alors je suis allé de l'avant l'a écrit ....
Dans la vue: p> (Remarque La syntaxe n'est pas in select_tag code>: p> f.helper code>, mais assistant f, autres_options code>) App / Aide / AM_PM_FORM_HELPER.RB CODE>: P> module AmPmFormHelper
#pass start:Fixnum in the options hash to set the first drop down selection
def am_pm_hour_select(object, method, options = {}, html_options = {})
select_options = [ ["6am", 6], ["7am", 7], ["8am", 8], ["9am", 9], ["10am", 10], ["11am", 11], ["12pm", 12], ["1pm", 13], ["2pm", 14], ["3pm", 15], ["4pm", 16], ["5pm", 17], ["6pm", 18], ["7pm", 19], ["8pm", 20], ["9pm", 21], ["10pm", 22], ["11pm", 23], ["12am", 24], ["1am", 1], ["2am", 2], ["3am", 3], ["4am",4 ], ["5am", 5]]
unless options[:start].nil?
shift_if_needed = Proc.new{|hour, start| hour<start ? hour+24 : hour}
select_options.sort!{|x, y| shift_if_needed.call(x.last,options[:start]) <=> shift_if_needed.call(y.last, options[:start]) }
end
object.select(method, select_options, options = {}, html_options = {})
end
end
J'avais juste ce même problème, et j'ai vu ce post pour que je pensais que j'avais donner ma réponse: vous l'utilisez comme tel: p> select_hour Time.now, :twelve_hour => true, :offset => 6, :prompt => "--", :midnight => true, :noon => "high noon"
Vous pouvez définir: l'option AMPM sur True qui affichera les heures d'heure comme suit: 12h00, 01h00 .. 23 h. http://api.rubyonrails.org/classes/actionview/helpers/datehelper.html#method------ Time_Sélectionnez P> P>
Il s'agit de la bonne voie prise en charge des rails, mais la sortie est une heure Select avec des options marquées de 01 AM, 02 AM, etc. qui rend le temps défini en lecture de "01 am: 30" qui est vraiment wonky à partir d'un utilisateur POV - presque aussi mauvais que 24 heures.
temps militaire i> :) Que diriez-vous du reste du monde qui utilise l'horloge 24h.