为什么在我的视图中输出日期的格式与Rails控制台中的to_date格式不同?

时间:2012-09-08 19:58:24

标签: ruby-on-rails ruby-on-rails-3 datetime

在我看来,我这样做:

  <td><%= client.last_contact.to_date %></td>

输出这个:

2011-08-11

但是当我在控制台中执行此操作时,我会得到我想要的格式:

1.9.3p194 :093 > c.last_contact
 => Thu, 11 Aug 2011 00:00:00 UTC +00:00 
1.9.3p194 :094 > c.last_contact.to_date
 => Thu, 11 Aug 2011 

在我看来,我希望它显示日期及其在控制台中的格式。

我如何实现这一目标?

感谢。

2 个答案:

答案 0 :(得分:6)

在rails视图中显示时间/日期的最佳方法是使用I18n本地化功能。 您可以在yaml文件的config/locales目录中设置日期时间格式。像这样的东西

# config/locales/datetime.en.yml
en:
  time:
    formats:
      # Use the strftime parameters for formats.
      # When no format has been given, it uses default.
      # You can provide other formats here if you like!
      default: "%d.%m.%Y"
      short: "%d %b"
      long: "%d %B %Y"
      date: "%a, %d %b %Y"

然后在您的观看中使用l帮助

<%= l client.last_contact, :format => :date %>

答案 1 :(得分:5)

控制台在值上调用inspect,而erb标记在其值上调用to_s

虽然您可以在视图中致电inspect,但我建议您使用strftime来准确定义您想要的内容

Date::today.strftime('%a, %d %b %Y')` 

或使用I18n.localize帮助器(别名为l),它允许您定义格式并重复使用

I18n.localize Date::today, :format => :long