Ruby on rails 为rails 4中的date_字段设置默认值

Ruby on rails 为rails 4中的date_字段设置默认值,ruby-on-rails,Ruby On Rails,我的应用程序中有几个表单,其中使用date\u选择,我刚刚改为使用date\u字段(使用HTML5表单元素)我唯一的问题是,date\u select将默认为今天的日期,这对我们来说非常合适,但是date\u字段将默认为dd/mm/yyyyy 我遇到了人们盲目提交表单并触发验证错误的问题 是否可以将日期字段默认为今天?您可以这样设置默认日期字段 date_field("user", "born_on", value: Time.now.to_s(:db)) <%= f.date_fiel

我的应用程序中有几个表单,其中使用
date\u选择
,我刚刚改为使用
date\u字段
(使用HTML5表单元素)我唯一的问题是,
date\u select
将默认为今天的日期,这对我们来说非常合适,但是
date\u字段
将默认为
dd/mm/yyyyy

我遇到了人们盲目提交表单并触发验证错误的问题


是否可以将日期字段默认为今天?

您可以这样设置默认日期字段

date_field("user", "born_on", value: Time.now.to_s(:db))
<%= f.date_field :birthday, :value => Time.now.strftime('%Y-%m-%d') %>

如果您通过gem安装Rails4,它还存在以下错误

修复上面的问题,您可以像这样设置默认值

date_field("user", "born_on", value: Time.now.to_s(:db))
<%= f.date_field :birthday, :value => Time.now.strftime('%Y-%m-%d') %>
Time.now.strftime(“%Y-%m-%d”)%%>

这将正确运行:

<%= f.date_field :birthday, :value => Time.now.strftime("%Y-%m-%d")  %>
Time.now.strftime(“%Y-%m-%d”)%%>

将时间对象用于日期字段对我不起作用,我必须使用日期对象

  • 我为Safari等浏览器使用了一个占位符,以引导它们在呈现为文本字段时使用正确的格式
  • 此外,如果该值已经存在(例如当您处于#编辑操作中时),则需要使用该值
  • Rails 4的最终视图代码:

    <%= f.date_field :birthday, placeholder: "YYYY-MM-DD", value: (f.object.birthday || Date.today.to_s(:db)) %>
    

    在Rails for中,您还可以执行以下操作:
    'Date.today%>

    如许多答案所示,设置:值将覆盖为任何正在编辑的记录传入的值。如果表单仅用于新条目,则这不是问题,但是如果要编辑表单中的记录,则会出现错误。解决这个问题的一种方法是明确地获取现有对象,正如Michael所建议的那样

    我目前使用的解决方案是在控制器中,它在构建新记录时将值设置为今天。假设您的模型为Person,并且希望默认值为start_date:

    def new
        @person = Person.new(start_date: Date.current)
    end
    
    然后,您可以只使用表单中的值,而无需任何额外的麻烦

    f.date_field :start_date
    

    这些选项都不适用于我,我尝试使用
    date\u field\u标签

    所做的工作是这样传递值:

    date\u field\u标记(:my\u thing\u end\u date,:end\u date,值:date.current.strftime(“%Y-%m-%d”)

    从文件中()

    默认值是通过尝试对对象的值调用“to_date”生成的,这使对象的行为符合DateTime和ActiveSupport::TimeWithZone实例的预期

    因此,以用户输入的字符串形式传递日期似乎是解决方案


    另外,根据这些关于日期和时区的好信息,
    Date.current
    time更可取。today
    :。

    你能在这里发布日期字段行吗。这对我也不起作用。无论你如何设置:值的格式,它都不会在字段中显示该日期,也不会在DOMDate中显示该日期。today对我起作用。Date\u f字段(“用户”,“出生”,值:Date.today.to_s(:db))