2009-04-20 124 views
4

有沒有人知道只有一個選擇框的Ruby on Rails time_select插件?因此,選擇框中有「9:00 AM」,「9:15 AM」等條目。Ruby on Rails的time_select插件?

我見過一些插件,但沒有像這樣。

謝謝!

回答

1

所以你想在一個選擇列表中以15分鐘爲單位增加每個可能的時間?我真的推薦使用標準的time_select插件來做。

編輯添加我不知道這樣的事情,我不認爲它會在那裏,你可能必須自己做。

9

我使用time_select ALOT在我的應用程序,並解決時間選擇問題與兩個小調整。

首先是minute_step:

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/

+0

是的,我已經看到,還有一個解決方案,但它不能在一個選擇做這項工作。我應該在一個小時左右完成編碼解決方案。我會很快發佈 – Tony 2009-04-20 22:28:07

+1

我修改了上面的答案,以使用Rails 3,並有12上午,而不是0上午。請參閱:https://gist.github.com/1340125。 – 2011-11-04 18:44:54

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 
1

如果您正在使用Rails 3來完成此任務,則需要將html_options分配給空字符串(html_options = "")。 build_select要求選擇選項爲html。否則,您將收到can't convert Array into String

查看build_select文檔。

只是一個友好的更新。請享用。