简单表单 date_field 未填充以供编辑

Simple form date_field not populating for edit

我正在使用 rails 4 简单表单来存储一些数据。我的日期字段存储正常,但表单输入为 mm-dd-yyyy 并存储为 yyyy-mm-dd。

当我对表单进行编辑操作时,returns 除了日期之外的所有内容都没有填写。

查看

<div class="input-group">
 <%= f.date_field :date_requested, as: :date%>
</div>

型号

attribute :date_requested, :datetime

这是因为数据库中存储的日期格式和您在视图中显示的日期格式有关。数据库以 yyyy/mm/dd 存储日期,在视图中您似乎想以 mm/dd/yyyy 格式

显示
<%= f.date_field :date_requested, as: :date, value: f.object.date_requested.try(:strftime,"%m/%d/%Y" %>

希望对您有所帮助。

您看到的是默认时间格式。

在您的 /config/initializers 目录中创建一个 ruby 文件,命名以便您识别它是什么 -- 我使用 time_formats.rb,并为每种时间日期格式添加一行你会想要使用。比如常用的Month Day, Year:

time_formats.rb

# Setup date view format
Time::DATE_FORMATS[:month_day_and_year] = "%b %d, %Y"

然后在您看来,您传递了通过初始化格式化的时间数据数据库值。

(Edited <%= yourmodelinstance.your_date_field.to_s(:month_day_and_year) %>.)    

将显示“(2015 年 3 月 1 日编辑)”

数据库时间字段格式根本不起作用。您必须创建过滤器以将原始 time/date 数据转换为字符串形式。

可以非常具体地定义显示日期的方式。对于所有可能的格式,请在此处查看 Ruby 文档 => http://apidock.com/ruby/DateTime/strftime

还有一件重要的事情:您可以在任何使用日期字段的地方使用帮助格式化程序,在表单、视图等上。