ruby-on-rails - 将标准 rails/ruby 时间转换为美国格式 - 日期混淆

标签 ruby-on-rails ruby date datetime datepicker

我正在尝试转换表单中的 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/

相关文章:

mysql - 如何在mysql中获取每个相应月份的第一天?

jquery - rails 4- 401未经授权的错误处理

ruby-on-rails - rails : Why "format" (regex) validation fails?

ruby-on-rails - 配置 ActiveResource 以支持 OAuth2

ruby-on-rails - 如何创建命名空间模型?

ruby-on-rails - 如何将 Ruby C 扩展添加到 Rails 应用程序中?

ruby - 哪个全局变量用于最后一个表达式

ruby-on-rails - 如何从数组中删除事件记录对象

mysql - SQL 查找日期早于 x 的所有条目中的最高日期

mysql - SQL语句获取从现在起接下来两天的日期