2014-09-03 43 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