Rails 3 中的时间格式规则放在哪里?

Posted

技术标签:

【中文标题】Rails 3 中的时间格式规则放在哪里?【英文标题】:where to put time format rules in Rails 3? 【发布时间】:2011-04-08 23:19:35 【问题描述】:

我发现自己重复输入许多我定义的 strftime。

观看了 Ryan Bates 的 railscasts ep 32/33(我认为),我为 to_s 方法创建了一个自定义选项,就像在 Time.now.to_s 中一样,这样我就可以执行 Time.now.to_s(:sw),其中:sw 是我的自定义方法,例如检索“2010 年 9 月 23 日,下午 5:00”。

但问题是,我不知道将#sw 的定义放在哪里。它应该在初始化文件夹中的文件中吗?还是应该放在 application.rb 中?

谢谢!

【问题讨论】:

顺便说一句 strftime.net 有很大帮助 【参考方案1】:

我有一个文件config/initialisers/time_formats.rb 包含:

...
Time::DATE_FORMATS[:posts] = "%B %d, %Y"
Time::DATE_FORMATS[:published] = "%B %Y"
...

您只需重新启动服务器即可获取更改。

【讨论】:

好吧,我也这么认为。也因为这样,您可以在文件中而不是在应用程序中的行中组织这些“助手”。谢谢!【参考方案2】:

使用 Rails I18n API。

# config/locales/en.yml
en:
  date:
    formats:
      default: "%Y-%m-%d"
      short: "%b %d"
      long: "%B %d, %Y"

# in views 
= l post.updated_at # will use default format of date in locales yml file

见I18n API

【讨论】:

【参考方案3】:

在您的语言环境文件中使用“时间”而不是“日期”,因为 Rails 时间戳是日期时间。

config/locales/en.yml

en:
  time:
    formats:
      default: "%Y/%m/%d"
      short: "%b %d"
      long: "%B %d, %Y"

app/views/posts/show.html.haml

  = l post.updated_at
  = l post.created_at, :format => :long

【讨论】:

【参考方案4】:

请阅读这篇文章:

Rails - to_formatted_s

使用名称创建文件:config/initializers/time_formats.rb

Time::DATE_FORMATS[:my_custom_time_format] = "%Y-%m-%d %H:%M"

你可以使用:

formated_date = my_date.to_formatted_s(:my_custom_time_format)

注意:您必须重新启动您的 Rails 服务器(WEBRick、FCGI 等)

【讨论】:

啊,我正忙着想弄清楚为什么我的格式没有改变。感谢您提供服务器重启提示!

以上是关于Rails 3 中的时间格式规则放在哪里?的主要内容,如果未能解决你的问题,请参考以下文章

ActiveRecord / Rails 3 中的日期格式

更改 Rails 4 中的默认日期和时间格式

Rails 3:社交流宝石。代码在哪里?

使用 Rails 6,您将“特定于页面”的 JavaScript 代码放在哪里?

在 Rails 4.1 中将页面特定的 jQuery 代码放在哪里?

在 Rails 应用程序中将模型搜索逻辑放在哪里?