Почему дата формата представления Rails неправильно отображается с помощью инициализатора?

В моем представлении у меня есть следующий формат, который я хочу вывести:

<tr>
  <th>Released:</th>
  <td>
   <%= movie.release_at.to_s(:release_date) %>
   (<%= time_ago_in_words(movie.release_at) %>)
  </td>
</tr>

Точный формат, который мне нужен, - «Месяц, день, год», поэтому я создал файл инициализации со следующим:

Date::DATE_FORMATS[:default] = "%B %e, %Y"

В моей схеме базы данных есть таблица фильмов с полем release_at с типом данных datetime, из которого я пытаюсь извлечь данные.


person Beast_Code    schedule 17.06.2015    source источник


Ответы (1)


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

<%= movie.release_at.to_date.to_s %>
person infused    schedule 17.06.2015
comment
Ты куда быстрее меня! Действительно ли to_s необходим? Я бы добавил это для тех, кто хочет некоторой настройки ‹%= l @movie.release_at.to_date, формат: :your_specific_format %›. Вот документация: guides.rubyonrails.org/i18n.html#adding -дата-время-форматы - person coding addicted; 17.06.2015
comment
@codingaddicted, to_s в данном случае строго не требуется, так как мы используем формат по умолчанию. - person infused; 17.06.2015