这是前端当前日期自动保存在数据库中的方式(没有datepickers n东西):
<% for order in @orders %>
<%= order.updated_at.strftime("%Y-%m-%d %I:%M") %>
有效,数据库中的数据:2013-05-03 21:32:59.847009
但问题是,对于后端我使用的是Active Admin,而我正在制作表单,因此可以编辑订单。 但问题是我真的不明白如何在那里应用相同的strftime函数,我认为它会是这样的:
f.input :updated_at, :date.strftime("%Y-%m-%d %I:%M")
但这不正确。得到错误:
undefined method `strftime' for :date:Symbol
有没有人知道如何在该行中正确实现strftime的解决方案?
答案 0 :(得分:1)
试试这个:
f.input :updated_at, :value => order.updated_at.try(:strftime,'%Y-%m-%d %I:%M')
当日期为零时, try
会阻止您获得例外。
答案 1 :(得分:0)
Active Admin使用config / locales中的yaml文件来确定日期的格式。
如果您希望默认日期为其他日期(假设为英语,则在config / locales / en.yml中):
en:
date:
formats:
long: "%Y-%m-%d %I:%M"
答案 2 :(得分:0)
如果我有你的问题:
表迁移中的 t.timestamps
会另外创建这些created_at
和updated_at
字段。这些字段是默认的datetime
类型字段。并在创建或更新记录时自动更新。
但是,如果您要添加datetime
字段,请将列类型定义为:datetime
像:
运行rails g migration add_time_to_table
此命令创建一个迁移文件,编辑此文件,如:
class AddTimeToTable < ActiveRecord::Migration
def self.up
add_column :table, :time, :datetime
end
def self.down
remove_column :table, :time
end
end
现在,此Table
模型包含time
属性。
因此,在ActiveAdmin视图中,您可以输入time
格式为datetime
像:
f.input :time