Плагины Ruby on Rails time_select? - PullRequest
       14

Плагины Ruby on Rails time_select?

4 голосов
/ 20 апреля 2009

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

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

Спасибо!

Ответы [ 6 ]

9 голосов
/ 21 апреля 2009

Я использую time_selects ALOT в своих приложениях и решаю проблемы выбора времени с двумя небольшими изменениями.

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

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

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

7 голосов
/ 08 декабря 2009

Вот действительно простой помощник, поместите его в свой помощник приложения. Вам необходимо преобразовать время в вашем контроллере / модели с помощью 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
2 голосов
/ 26 октября 2011

Rails ActionView :: Helpers :: DateHelper класс имеет решение для этого

<%= f.time_select :attribute_name, :minute_step => 15, :ampm => true %>
2 голосов
/ 08 января 2010

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

1 голос
/ 13 февраля 2011

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

См. Документацию build_select .

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

1 голос
/ 20 апреля 2009

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

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...