【问题标题】:Rails Use Form and Bootsratp Date Picker to Store DatetimeRails 使用 Form 和 Bootsratp 日期选择器来存储日期时间
【发布时间】:2014-09-03 00:06:23
【问题描述】:

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

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

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

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

【问题讨论】:

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


    【解决方案1】:

    尝试解析 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
    

    【讨论】:

    • 使用 text_field 就像 &lt;%= f.text_field :start_dt, 'data-behaviour' =&gt; 'datepicker' %&gt; 我如何/在哪里可以将您的建议实施到该字段中?
    • 在表单的业务端实现它 - 你的控制器,或者在模型级别的 before_save 回调。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-09-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-11-13
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多