11
votes

Temps Select Form Aide avec format 12 heures pour les rails 3?

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.

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.

merci!


1 commentaires

temps militaire :) Que diriez-vous du reste du monde qui utilise l'horloge 24h.


5 Réponses :


0
votes

Pour ce type d'usage, je vous recommande d'utiliser JQuery UI. C'est bien plus convivial

Voici un lien


2 commentaires

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.



0
votes

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> xxx pré>

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 
}


0 commentaires

1
votes

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 select_tag code>: p> xxx pré>

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> xxx pré>

(Remarque La syntaxe n'est pas f.helper code>, mais assistant f, autres_options code>)

in 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


0 commentaires

0
votes

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: xxx pré>

vous l'utilisez comme tel: p>

select_hour Time.now, :twelve_hour => true, :offset => 6, :prompt => "--", :midnight => true, :noon => "high noon"


0 commentaires

14
votes

Vous pouvez définir: l'option AMPM sur True qui affichera les heures d'heure comme suit: 12h00, 01h00 .. 23 h. XXX

http://api.rubyonrails.org/classes/actionview/helpers/datehelper.html#method------ Time_Sélectionnez


1 commentaires

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.