Question

Quelqu'un sait-il tout Ruby on Rails time_select plugins qui ont une seule boîte de sélection? Ainsi, la zone de sélection comporte des entrées comme "9:00", "9:15", etc.?

Je l'ai vu quelques plugins, mais rien comme ça.

Merci!

Était-ce utile?

La solution

Donc, vous voulez à chaque fois que possible par incréments de 15 minutes dans une liste de sélection? Je recommande vraiment le faire en utilisant le plug-in standard time_select.

Edité pour ajouter Je ne sais pas de quoi que ce soit comme ça, et je ne pense pas que ce serait là-bas, vous aurez probablement à faire votre propre.

Autres conseils

Je l'utilise dans mes time_selects applications ALOT, et résoudre les problèmes en temps de sélection avec deux ajustements mineurs.

Le premier est minute_step:

f.time_select :start_of_shift, :minute_step => 15

coupera cette boîte de sélection de minute en odieux une taille très maniable (choisir votre propre!)

En outre, je trouve un module rubis que je place i mon dossier initialiseur de tous mes temps applications basées sur:

module ActionView
module Helpers
class DateTimeSelector
def select_hour_with_twelve_hour_time 
  datetime = @datetime
  options = @options
  return select_hour_without_twelve_hour_time(datetime, options) unless options[:twelve_hour].eql? true
  if options[:use_hidden]
    build_hidden(:hour, hour)
  else
    val = datetime ? (datetime.kind_of?(Fixnum) ? datetime : datetime.hour) : ''
    hour_options = []
    0.upto(23) do |hr|
      ampm = hr <= 11 ? ' AM' : ' PM'
      ampm_hour = hr == 12 ? 12 : (hr / 12 == 1 ? hr % 12 : hr)              
      hour_options << ((val == hr) ?               
      %(<option value="#{hr}" selected="selected">#{ampm_hour}#{ampm}</option>\n) :               
      %(<option value="#{hr}">#{ampm_hour}#{ampm}</option>\n)             
      )
    end           

    build_select(:hour, hour_options)         
  end       
  end       
  alias_method_chain :select_hour, :twelve_hour_time     
  end   
end
end

Je voudrais pouvoir me rappeler où je l'ai trouvé pour que je puisse créditer la source, mais en un mot, il me permet de déclarer 12 heures briser mes champs time_select à deux sélections faciles qui sont très faciles à gérer.

f.time_select :start_of_shift, :twelve_hour => true, :minute_step => 15

EDIT: Trouvé la source du fichier rubis! Trouvez ici: http://brunomiranda.com/past/2007/6/2/ displaying_12_hour_style_time_select /

Voici une aide vraiment de base, mettez dans votre assistant d'application. Vous devez convertir le temps dans votre contrôleur / modèle avec Time.parse (params [: your_field]). Cela ne résout pas probablement votre problème, mais il vous faut indiquer au moins dans la bonne direction.

def time_select_tag(name)
  times = []
  (00..23).each do |i|
    (0..3).each { |inc| times << Time.parse("#{i}:#{inc * 15}") }
  end
  return select_tag name, options_for_select(times.map{|t| t.strftime('%I:%M%p')})
end

Avez-vous regardé 12_hour_time ? Cela a fonctionné pour moi dans le passé.

Rails ActionView :: :: Helpers DateHelper classe a une solution pour cette

<%= f.time_select :attribute_name, :minute_step => 15, :ampm => true %>

Si vous cherchez à faire avec Rails 3, vous devez attribuer html_options à une chaîne vide (html_options = ""). build_select nécessite que les options de sélection pour être html. Sinon, vous recevrez can't convert Array into String.

Voir build_select documentation .

Juste une mise à jour facile. Profitez.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top