Ruby on Rails time_select插件?

Ton*_*ony 4 ruby plugins ruby-on-rails datetime-select

有没有人知道任何只有一个选择框的Ruby on Rails time_select插件?所以选择框有"9:00 AM","9:15 AM"等条目?

我见过几个插件,但没有这样的.

谢谢!

Bus*_*ark 9

我在我的应用程序中使用time_selects ALOT,并通过两次微调来解决时间选择问题.

第一个是minute_step:

f.time_select :start_of_shift, :minute_step => 15
Run Code Online (Sandbox Code Playgroud)

这会将令人发指的分钟选择框切成一个非常可管理的大小(选择你自己的!)

此外,我找到了一个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
Run Code Online (Sandbox Code Playgroud)

我希望我能记得我发现它的位置,所以我可以归功于它,但简而言之,它允许我指定12小时的时间将我的time_select字段分解为两个易于选择,非常容易管理.

f.time_select :start_of_shift, :twelve_hour => true, :minute_step => 15
Run Code Online (Sandbox Code Playgroud)

编辑:找到ruby文件的来源!在此处找到它:http://brunomiranda.com/past/2007/6/2/displaying_12_hour_style_time_select/


sea*_*rts 7

这是一个非常基本的帮助器,将它放在您的应用程序帮助器中.您必须使用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
Run Code Online (Sandbox Code Playgroud)