【问题标题】:Rails DateTime field has current date/time if nil in the database如果数据库中为 nil,Rails DateTime 字段具有当前日期/时间
【发布时间】:2013-04-18 01:32:04
【问题描述】:

我有一个带有datetime 字段的表单。由于 Rails 3.2.13 还不支持 type="datetime-local" input 字段(而且我还没有准备好迁移到 4.0 测试版),所以我手动执行此操作:

<input type="datetime-local" name="person[my_date_time]"<% if @person.my_date_time %> value="<%=@person.my_date_time.strftime('%FT%T')%>"<% end %>/>

问题是@person.my_date_time 将是当前日期/时间,如果它在数据库中是nil。它也以秒为单位输出,这破坏了 Chrome 对日期时间的处理。如果数据库中为nil,我希望该字段为空。我怎么知道? Rails 的datetime_select 方法按我想要的方式处理它。

【问题讨论】:

    标签: ruby-on-rails ruby-on-rails-3 activerecord ruby-on-rails-3.2 rails-activerecord


    【解决方案1】:

    如果数据库中的日期时间字段为nil,则您的应用程序中的某些内容必须更改或覆盖该值。也许您在某处有默认设置?如果没有看到比现在发布的更多的代码,就不可能说出发生了什么。您可以为您发布代码Person 模型和任何其他相关代码(任何可能影响事物的宝石等)吗?

    strftime("%FT%R")  # Will output without seconds, e.g. "2013-04-18T21:43"
    

    http://www.ruby-doc.org/core-1.9.3/Time.html#method-i-strftime

    【讨论】:

    • 我没有立即看到什么可以将 DateTime 初始化为当前时间,但 strftime %R 解决了另一个导致 Chrome 对该字段执行错误操作的问题,谢谢!
    猜你喜欢
    • 1970-01-01
    • 2019-04-19
    • 1970-01-01
    • 2021-10-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-12-21
    • 1970-01-01
    相关资源
    最近更新 更多