Rails使用表单和Bootstrap Datepicker来存储日期时间

时间:2014-09-03 00:06:24

标签: jquery ruby-on-rails twitter-bootstrap datetime

我正在使用Bootstrap日期选择器在弹出的日历中设置日期。但是,在简单使用弹出日历日期选择器的形式中,它必须是text_field,如下所示:

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

这个问题是我希望将它存储为日期时间,并且通过使用text_field我收到了一个超出界限的参数。如果我将字段设置为f.datetime_field,则会以年,月和日的形式显示多个下拉菜单,并且不会显示我想要的日历。

rails form_for中是否有设置允许设置日期时间而不自动显示日期选择的一系列菜单?

1 个答案:

答案 0 :(得分: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

编辑:您可以在模型级别实现此操作,如下所示 - 将您的参数名称更改为: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