2013-02-09 19 views
0

我有這種形式,我認爲建立控制器日期:獲取並從select_date和select_time

<tr> 
     <td>Date</td> 
     <td> 
     <%= select_date(@min_date, { :order => [:day, :month, :year], start_year: @start_year, end_year: @end_year }, style: "width: auto;") %> 
     </td> 
    </tr> 
    <tr> 
     <td>Time</td> 
     <td> 
     <%= select_time(@min_date, {}, style: "width: auto;") %> 
     </td> 
    </tr> 

而且我得到它在我的控制器是這樣的:

unless params[:date].nil? 
    params[:event][:date] = DateTime.new(
    params[:date][:year].to_i, params[:date][:month].to_i, 
    params[:date][:day].to_i, params[:date][:hour].to_i, 
    params[:date][:minute].to_i, 0 
) 
end 

的問題在於輸入如下示例日期: enter image description here

設置小時和分鐘,但不設日期:

(rdb:369) pp date 
Sat, 09 Feb 2013 16:37:00 UTC +00:00 

我不知道我錯過了什麼......我想感謝所有幫助

回答

0

我已經弄清楚了,在我的視圖中設置select_date和select_time助手中的prefix屬性,就像這樣。

<tr> 
     <td>Date</td> 
     <td> 
     <%= select_date(@min_date, { :prefix => "date", :order => [:day, :month, :year], start_year: @start_year, end_year: @end_year }, style: "width: auto;") %> 
     </td> 
    </tr> 
    <tr> 
     <td>Time</td> 
     <td> 
     <%= select_time(@min_date, { :prefix => "time" }, style: "width: auto;") %> 
     </td> 
    </tr> 

和建設日期,如下所示:

unless params[:date].nil? 
    params[:event][:date] = DateTime.new(
    params[:date][:year].to_i, params[:date][:month].to_i, 
    params[:date][:day].to_i, params[:time][:hour].to_i, 
    params[:time][:minute].to_i, 0 
) 
end 
0

你不必爲此在控制器上。假設這是數據庫中的日期時間字段,則rails將自動執行所有這些操作。從數據庫中獲取格式時,可以更改格式。

+0

但我需要之前設定日期的事件保存到數據庫中,因爲我必須把它與其他日期比較反正只有在時間正在設定正確,而不是日期 – 2013-02-09 21:00:17