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 中的时间格式规则放在哪里?的主要内容,如果未能解决你的问题,请参考以下文章
使用 Rails 6,您将“特定于页面”的 JavaScript 代码放在哪里?