我正在尝试转换表单中的 YYYY-MM-DD 格式并将 View 显示为 MM/DD/YYYY - 这是一种非常标准的美国日期格式。不知道该怎么做 - 我认为在/show 中的日期实例上调用 .strftime("%m/%d/%Y")
可以解决问题。非常困惑 - 找不到解释如何转换实际有意义的日期的文档。我正在关注这个 railscast:http://railscasts.com/episodes/213-calendars-revised
如果有帮助,我正在使用 jQuery 日期选择器并使用此 coffeescript:
jQuery ->
$('input.datepicker').datepicker()
dateFormat: 'mm-dd-yy'
weekStart: 0
autoclose: true
_表格
<%= f.label :due %><br />
<%= f.text_field :due, { :class => 'datepicker' } %>
上面将日期以MM/DD/YYYY格式输入到表格中,但保存为YYYY-MM-DD
--- 找到更新/解决方案 ---
事实证明我走在了正确的 rails 上,而且我并没有发疯。我的部分问题是我遇到了一个 nil 对象问题,通过在我的 View 中调用 .try
解决了这个问题,如果不是 nil,它只会运行该方法。
.try(:strftime, "%m/%d/%Y")
此外 - 我安装了以下 gem:gem 'american_date'
它会自动解析日期。在显示 View 中效果很好,但在表单 View 中仍然显示 YYYY-MM-DD(仅限编辑 View )。
最佳答案
在 RoR 中处理日期时,我们必须解决三个任务。我发现这些解决方案对我来说是最简单的:
1.如何正确显示日期。
安装 I18n gem 并检查 config\locales\en.yml 中的日期格式。然后使用 I18n.l()(或只是 l)表单助手来本地化 html.erb 文件中的日期。
date:
formats:
default: "%m/%d/%y"
2.如何方便用户修改日期。
使用 jQuery datepicker(或 bootstrap datepicker 等)并根据 en.yml 格式在 jQuery widget 选项中设置日期格式。
3.如何将日期从本地化( View )格式转换为 activerecord 属性。
安装 Delocalize gem 并将 :input 子部分添加到 date: en.yml 文件的部分。
input:
formats:
- :default
现在,当您分配日期时,您的日期将自动从本地化格式 (mm/dd/yy) 转换为数据库格式 (yyyy-mm-dd)。
关于ruby-on-rails - 将标准 rails/ruby 时间转换为美国格式 - 日期混淆,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14012584/