2010-06-29 35 views

回答

7

萬一有人絆倒在這個問題,鋼軌3.2的答案是:

<%= f.datetime_select :attribute_name, 
         ampm: true %> 
+1

這是正確的,Rails的支持方式,但輸出是一小時選擇標記爲01 AM,02 AM等的選項,使得設置的時間像「01 AM:30」那樣讀取,這從用戶POV看來非常不穩定 - 幾乎與24小時一樣差。 – pjmorse 2015-04-06 15:01:35

+0

我很困惑,爲什麼有人會這樣編程。沒有意義。規範是3盒「9:15:PM」 – gregblass 2015-12-03 15:49:05

+1

@GregBlass,我們應該切換到24小時制。 ;-) – Tass 2015-12-03 17:06:06

2

這是我加入我的助手類的方法:

def am_pm_hour_select(field_name) 
select_tag(field_name,options_for_select([ 
    ["1 AM", "01"],["2 AM", "02"],["3 AM", "03"],["4 AM", "04"],["5 AM", "05"],["6 AM", "06"], 
    ["7 AM", "07"],["8 AM", "08"],["9 AM", "09"],["10 AM", "10"],["11 AM", "11"],["12 PM", "12"], 
    ["1 PM", "13"],["2 PM", "14"],["3 PM", "15"],["4 PM", "16"],["5 PM", "17"],["6 PM", "18"], 
    ["7 PM", "19"],["8 PM", "20"],["9 PM", "21"],["10 PM", "22"],["11 PM", "23"],["12 AM", "0"]])) 
end 

然後我插入這個方法到我的觀點:

<%= am_pm_hour_select "eventtime[start(4i)]" %> 

它似乎做的伎倆,但如果有一個更地道這樣做的方式,我有興趣聽到。

(更新:通過修昔底德發現修復的錯誤)

2

下面對待子午不正確的代碼:它調用中午'12 AM「,這是午夜;它叫午夜12點,這是中午。

此外,代碼應該使用0:00作爲午夜,這是國際標準。

修正:

def am_pm_hour_select(field_name) 
select_tag(field_name,options_for_select([ 
    ["1 AM", "01"],["2 AM", "02"],["3 AM", "03"],["4 AM", "04"],["5 AM", "05"],["6 AM", "06"], 
    ["7 AM", "07"],["8 AM", "08"],["9 AM", "09"],["10 AM", "10"],["11 AM", "11"],["Noon", "12"], 
    ["1 PM", "13"],["2 PM", "14"],["3 PM", "15"],["4 PM", "16"],["5 PM", "17"],["6 PM", "18"], 
    ["7 PM", "19"],["8 PM", "20"],["9 PM", "21"],["10 PM", "22"],["11 PM", "23"],["Midnight", "0"]])) 
end