Вопрос

Кто-нибудь знает какие-нибудь плагины time_select для Ruby on Rails, которые имеют только одно поле выбора?Значит, в поле выбора есть такие записи, как «9:00», «9:15» и т. д.?

Я видел несколько плагинов, но ничего подобного.

Спасибо!

Это было полезно?

Решение

Итак, вы хотите, чтобы каждое возможное время с шагом в 15 минут было в одном списке выбора?Я бы очень рекомендовал сделать это с помощью стандартного плагина time_select.

Отредактировано, чтобы добавить Я не знаю ничего подобного и не думаю, что это будет доступно, вам, вероятно, придется сделать что-то свое.

Другие советы

Я МНОГО использую time_selects в своих приложениях и решаю проблемы выбора времени с помощью двух незначительных изменений.

Первый — минуту_шага:

f.time_select :start_of_shift, :minute_step => 15

Это сократит это отвратительное поле выбора минут до очень удобного размера (выберите свой собственный!)

Кроме того, я нашел модуль Ruby, который поместил в папку инициализатора всех моих приложений, основанных на времени:

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

Хотелось бы вспомнить, где я его нашел, чтобы указать источник, но, в двух словах, это позволяет мне указать 12-часовое время, разбивая мои поля time_select на два простых выбора, которыми очень легко управлять.

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

РЕДАКТИРОВАТЬ:Нашел источник рубинового файла!Найдите это здесь: http://brunomiranda.com/past/2007/6/2/displaying_12_hour_style_time_select/

Вот действительно простой помощник, поместите его в свой помощник приложения.Вам придется преобразовать время в вашем контроллере/модели с помощью Time.parse(params[:your_field]).Вероятно, это не решит вашу проблему, но, по крайней мере, должно указать вам правильное направление.

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

Вы посмотрели 12_hour_time?Это сработало для меня в прошлом.

Рельсы ActionView::Helpers::DateHelper в классе есть решение для этой проблемы

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

Если вы хотите сделать это с помощью Rails 3, вам нужно будет назначить html_options в пустую строку (html_options = ""). build_select требует, чтобы параметры выбора были HTML.В противном случае вы получите can't convert Array into String.

См. build_select документация.

Просто дружеское обновление.Наслаждаться.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top