有沒有辦法讓text_field只用於日期時間屬性的日期部分?例如,我有一個名爲published_on的日期時間參數,並且我希望我的text_field只提交日期時間字段的日期(而不是時間)。這不起作用:帶text_field的日期時間表格
<%= f.text_field :published_on, :value=> (@step.published_on.strftime("%m/%d/%Y")), :ignore_time=>true %>
並提交參數published_on而不是published_on(1I),published_on(2I),以及published_on(3I)(年度,小時和分鐘)。
編輯
我現在能夠得到的參數,但我有一個時區錯誤
這是我的控制器代碼:
date = params[:step][:published_on]
logger.debug "date: #{date}"
time = params[:step][:"published_on(4i)"] +":" + params[:step][:"published_on(5i)"]
logger.debug "time: #{time}"
dateTime = date+ " " + time
logger.debug "dateTime: #{dateTime}"
dateTime = DateTime.strptime(dateTime, '%m/%d/%Y %H:%M')
logger.debug "datetime: #{dateTime}"
params[:step][:published_on] = dateTime
params[:step].delete :"published_on(4i)"
params[:step].delete :'published_on(5i)'
打印出以下日誌報表:
date: 01/01/2013
time: 00:00
dateTime: 01/01/2013 00:00
datetime: 2013-01-01T00:00:00+00:00
它se因爲時區設置爲默認(00:00),所以ems像時間不正確。有什麼辦法從表單傳遞時區?
感謝您的幫助!當我嘗試解析published_on參數時,出現「無效日期」錯誤。這是我的控制器代碼: @ step.published_on = DateTime.parse(params [:step] [:published_on])。這是我的形式:<%= f.text_field:published_on,:ignore_time => true%> – scientiffic
你在text_field中輸入了什麼字符串?例如'DateTime.parse(「1/2/2013」) => Wed,02 Jan 2013 00:00:00 + 0000'適合我。您可能需要添加額外的驗證,以確保文本字段中的數據具有「parse」識別的有效格式。 – Tilo
文本字段以「05/31/2013」格式發送日期 – scientiffic