我目前正在使用Rails国际化和日期格式。Ruby on Rails,以适当的日期格式保存到数据库
我正在开发一款应用程序,最终将针对美国市场以及英法加拿大市场进行部署。
在Postgresql数据库中日期格式为yyyy-mm-dd(即2017-02-24),当我想从数据库中检索日期并将其显示在视图或表单中时,我会使用以下方法。
当显示的日期,我会用:
<h5><%=p.date.strftime("%m/%d/%Y - %l:%M:%S %p")%></h5>
当表格处理他们,我会找回在控制器中的日期,然后这样做:
@receivable.date_posted = Date.today.strftime("%m/%d/%Y")
然后它会显示使用格式正确。 在窗体中,我有一个日期选择器,以适当的m/d/yyyy格式选择日期。
然后,一旦表单被提交,我必须从参数(m/d/yyyy格式)中获取日期,并将其重新格式化为适当的数据库日期格式yyyy-mm-dd,如下所示:
@receivable.date_posted = Date.strptime(params[:date_posted],"%m/%d/%Y")
我很快意识到,一旦我尝试实施加拿大日期格式,这将有点疯狂,所以我已经研究了国际化。
我已经创造了市场正常的语言环境和现在使用以下时,我想显示正确的日期格式
不过,我还是觉得自己困惑的是在表格处理日期时,该怎么办。
现在我不必格式化检索记录的日期,我在表单中使用以下内容。
<%= f.text_field :date_posted, :value => (l f.object.date_posted, format: :notime), class: "form-control input-sm text-center",id: "receivable_date_posted", style: "display: inline-block; vertical-align: middle; width: 60%; margin: 0 5px 0 0;"%>
但是,当我尝试更新或在适当的控制器事件创建记录因为日期仍来自于M/d/yyyy格式(在params中,另一种格式取决于不解决我的问题在本地)。
有一个简单的方法来保存在适当的数据库格式的日期,而无需转换日期(这可能意味着转换日期取决于区域每一个可能的日期格式?)
您的日期选择器可以显示一种格式,但在表单中另存一个格式吗?这样,除了应用程序的边缘,您可以使用ISO8601格式(YYYY-MM-DD)。 –