Отметки времени выглядят иначе - PullRequest
1 голос
/ 14 апреля 2009

В Rails я считаю, что временные метки в консоли выглядят иначе, чем фактическое представление html, даже если у вас одинаковый код. Если я не делаю что-то действительно глупое:

>> article = News.first
=> #<News id: 1, title: "Testing", body: "yadda yadda", role_id: 1, created_at: "2009-04-12 05:33:07", updated_at: "2009-04-12 05:33:07">
>> article.created_at
=> Sun, 12 Apr 2009 05:33:07 UTC +00:00
>> article.created_at.to_date
=> Sun, 12 Apr 2009

А в виде:

<% for article in @news %>
    <% @current_date = article.created_at.to_date %>
    <% if @current_date != @date %>
        <%= @current_date %>
        <% @date = @current_date %>
    <% end %>

Вывод будет:

2009-04-14

Почему форматы разные?

Ответы [ 2 ]

1 голос
/ 16 апреля 2009

В config / initializers / time_formats.rb напишите:

Time::DATE_FORMATS[:article] = "%a, %d %B %Y"
0 голосов
/ 14 апреля 2009

<%= вызывает to_s для объекта Date, что приводит к 2009-04-14 независимо от того, где он вызывается:

>> Date.today
=> Tue, 14 Apr 2009
>> Date.today.to_s
=> "2009-04-14"

Я действительно не знаю, что вызывается, когда вы не используете to_s.

ОБНОВЛЕНИЕ: Теперь я знаю. Если вы не используете to_s или эквивалент, irb вызывает inspect для объекта даты:

>> Date.today.inspect
=> "Tue, 14 Apr 2009"

ОБНОВЛЕНИЕ 2:

Вы можете заменить @current_date на @current_date.to_s (или @current_date.to_s(:format)) по вашему мнению. Формат может быть короткий, длинный, дБ, длинный_ординальный, rfc822 или номер.

Вы также можете определить формат даты по умолчанию в локали вашего приложения.

...