繁体   English   中英

Ruby on Rails 4:使用数据库和表单之间的日期

[英]Ruby on Rails 4: Working with dates between database and forms

我正在寻找一些从表单和数据库来回转换日期的帮助。 我一直在使用以下方法,但是似乎应该有一种更好/更简便的方法来管理此方法。

视图中的代码:

  <%= f.label :issue_date, "Date Issued" %>
  <%= f.text_field :issue_date, class: 'form-control', :value => @license.issue_date.strftime("%m-%d-%Y") %>

控制器中的代码:

params[:license][:issue_date] = DateTime.strptime( params[:license][:issue_date], "%m-%d-%Y").strftime("%Y-%m-%d")
params[:license][:expiration_date] = DateTime.strptime( params[:license][:expiration_date], "%m-%d-%Y").strftime("%Y-%m-%d")

我担心的是,这很大程度上取决于输入格式是否正确。 例如,如果输入4/2/2015而不是4-2-2015,它将破坏代码。 我将不胜感激任何帮助或建议! 我已经阅读了很多有关约会的文章,但没有专门回答这个问题。

不幸的是,至少在我的经验中,很难在Rails中设置具有良好UI的日期输入。 如果您愿意在UI上做出一些妥协,最简单的解决方案是使用内置的date_select帮助器:

<%= f.date_select :issue_date %>

这将生成三个选择输入,如下所示:

在此处输入图片说明

Rails将自动处理将来自这三个输入的提交转换为数据库中的正确日期。 同样,UI并不是很好,但是它确实解决了日期格式验证问题。

以后,如果您决定改用Javascript日期选择器,则设置JS以确保日期值始终以YYYY-MM-DD格式提交到服务器,这正是Rails期望的格式。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM