我正在尝试在我的表单中转换YYYY-MM-DD格式并将视图显示为MM / DD / YYYY - 这是一种非常标准的美国日期格式。不确定如何解决这个问题 - 我认为在/ show中的日期实例上调用.strftime("%m/%d/%Y")
就可以了。非常困惑 - 找不到解释如何转换实际有意义的日期的文档。我正在关注这个railscast:http://railscasts.com/episodes/213-calendars-revised
如果有帮助,我正在使用jQuery datepicker并有这个coffeescript:
jQuery ->
$('input.datepicker').datepicker()
dateFormat: 'mm-dd-yy'
weekStart: 0
autoclose: true
_form
<%= f.label :due %><br />
<%= f.text_field :due, { :class => 'datepicker' } %>
以上将MM / DD / YYYY格式的日期输入表格,但保存为YYYY-MM-DD
---更新/解决方案---
原来我是在正确的轨道而不是真的疯了。我的一部分问题是我遇到了一个nil对象问题,通过在我的视图中调用.try
来解决这个问题,如果不是nil则只运行该方法。
.try(:strftime, "%m/%d/%Y")
另外 - 我安装了以下gem:gem 'american_date'
自动解析日期。在展示视图中效果很好,但在表单视图中仍然可以获得YYYY-MM-DD(仅限编辑视图)。
答案 0 :(得分:4)
在RoR中处理日期时,我们必须解决三个任务。我发现这些解决方案对我来说是最简单的:
安装 I18n gem并在config \ locales \ en.yml中检查日期格式。然后使用 I18n.l()(或只是l)表单帮助程序来本地化html.erb文件中的日期。
date:
formats:
default: "%m/%d/%y"
使用jQuery datepicker(或bootstrap datepicker等)并根据en.yml格式在jQuery小部件选项中设置日期格式。
安装 Delocalize gem并将:input子节添加到en.yml文件的date:部分。
input:
formats:
- :default
现在,当您指定日期时,您的日期将自动从本地化格式(mm / dd / yy)转换为数据库格式(yyyy-mm-dd)。
答案 1 :(得分:3)
我必须使用altField
和altFormat
选项才能按照说明使用此功能:
$('input.datepicker').datepicker({
dateFormat: "mm/dd/yy",
altField: alt_field,
altFormat: "yy-mm-dd"});
这需要一个隐藏字段alt_field
,它实际上以标准数据库格式保存您的日期。
答案 2 :(得分:0)
包含以下gem,它会自动将美国日期保存为db格式。
gem 'american_date'