ruby-on-rails 简单表单date_field未填充以供编辑

dffbzjpn  于 2023-01-10  发布在  Ruby
关注(0)|答案(2)|浏览(102)

我正在使用rails4的simple form来存储一些数据,我的日期字段存储得很好,但是表单输入是mm-dd-yyyy,并且存储格式是yyyy-mm-dd。
当我在表单上执行编辑操作时,除了日期之外的所有内容都返回,日期没有填充。

    • 查看**
<div class="input-group">
 <%= f.date_field :date_requested, as: :date%>
</div>
    • 型号**
attribute :date_requested, :datetime

iyfjxgzm

iyfjxgzm1#

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

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

希望这个有用。

gmxoilav

gmxoilav2#

您看到的是默认的时间格式。
在/config/initializers目录中创建一个ruby文件,命名要便于识别--我使用time_formats. rb,并为您要使用的每个时间日期格式添加一行。例如,对于常用的Month Day,Year:
时间格式. 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日)"
数据库时间字段格式根本不起作用。您必须创建过滤器来将原始时间/日期数据转换为字符串格式。
您可以非常具体地定义日期的显示方式。对于所有可能的格式,请参见Ruby文档here =〉http://apidock.com/ruby/DateTime/strftime
还有一件重要的事在窗体、视图等使用日期字段的任何地方,都可以使用helper格式化程序。

相关问题