2014-09-03 44 views
0

我正在使用Bootstrap日期選擇器來設置彈出日曆內的日期。然而,形式簡單地使用彈出式日曆日期選擇器必須是如圖所示的text_field:Rails使用窗體和Bootsratp日期選擇器來存儲日期時間

<%= f.text_field :start_dt, 'data-behaviour' => 'datepicker' %>

這樣做的問題是,我希望將其存儲爲日期時間,我收到通過使用text_field引起的邊界錯誤。如果將字段設置爲f.datetime_field,則會以年,月和日的形式顯示多個下拉菜單,並且不顯示我想要的日曆。

在rails的form_for中是否有一個設置允許設置日期時間而不自動顯示日期選擇的那一系列菜單?

回答

2

嘗試解析text_field以產生DateTime對象,然後存儲它:

>> DateTime.parse("2014-01-01") 
=> Wed, 01 Jan 2014 00:00:00 +0000 
>> Date.parse("2014-01-01") 
=> Wed, 01 Jan 2014 

編輯:你可以在模型級別如下實施這 - 改變你的PARAM名稱:start_dt_string,然後解析其插入DateTime對象before_save:

class Event < ActiveRecord::Base 
    before_save :parse_date 

    def parse_date 
    unless start_dt_string.blank? 
     self.start_dt = DateTime.parse(start_dt_string) 
    end 

    unless end_dt_string.blank? 
     self.end_dt = DateTime.parse(end_dt_string) 
    end 
    end 
end 
+0

隨着text_field簡稱爲'<(%)= f.text_field:start_dt, '數據行爲'=>'如何/ I,其中可以實施你的建議, '日期選擇器' %>這個領域? – Sauron 2014-09-03 12:41:23

+0

在窗體的業務端(您的控制器)或before_save回調模型級別上實現它。 – 2014-09-03 13:59:08