Как изменить формат даты с типа по умолчанию в Rails 2.0.2 с использованием MySQL 5.1

0

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

Я работаю над Rails 2.0.2. Как мы знаем, при использовании команды Scaffold мы автоматически получаем атрибуты "id", "created_at" и "updated_at" как часть вашей таблицы.

Моя команда scaffold выглядит так: -

script/server scaffold posts name:string title:string content:text

В основном я пытаюсь реализовать приложение для блога. Теперь, когда я пытаюсь проверить дату публикации определенного блога, я использую вспомогательные теги и <%=h post.created_at %> в файле index.html.erb..

Я могу показать дату, когда блог изначально был создан в формате по умолчанию, который в настоящее время похож: Tue Jan 18 13:00:05 +0530 2011 через MySql 5.1 DB. Я хочу изменить этот формат на месяц Дата Год.. как в приведенном выше случае это было бы 18 января 2011 года.

В этом отношении вы могли бы рассказать мне, как мне это сделать. Я не уверен, где мне нужно внести изменения.

Есть ли способ, с помощью которого я могу хранить данные в index.html.erb и преобразовывать его тогда и там в пользовательский формат? Я не слишком уверен, как это сделать непосредственно из представления.

Кроме того, я предполагаю, что если жестко закодированное будет нарушением DRY (Do not Repeat Yourself), противоречащим принципам Rails. Не могли бы вы предложить подходящий способ. Что-то, что я могу изменить в соответствии с требованиями конечного пользователя.

Спасибо..

Теги:
date
dry

3 ответа

0
Лучший ответ

Способ Rails обрабатывает форматы преобразования даты и времени независимо от используемой вами базы данных. Чтобы переопределить формат по умолчанию, вы должны добавить в приложение инициализатор. У меня есть мой в config/initializers/time_formats.rb. Затем в этом файле вы определяете форматы, которые вы хотите использовать во всем приложении:

Time::DATE_FORMATS[:just_date] = "%b %d, %Y"
Time::DATE_FORMATS[:just_time] = "%I:%M%p"

Чтобы использовать новые форматы, вы передадите символ преобразованию строки следующим образом:

<%= @post.created_at.to_s(:just_date) %>
  • 0
    Я опробовал ваше решение. Оно не сработало. Я снова вернул дату форматирования по умолчанию, как указано выше.
  • 0
    Вы перезапустили свой сервер? Это должно определенно работать
Показать ещё 1 комментарий
1

Вы можете использовать date_select_tag в представлении и передать его в объекте времени, и он сделает магию для вас. Например, например, ваш временной объект создается тогда,

<%= date_select_tag, :created_at, @user.created_at %>

Rails позаботится о том, чтобы преобразовать его назад и вперед.

Изменить: Кроме того, вы можете преобразовать его в дату для просмотров с помощью @user.created_at.to_date.strftime(), как описано здесь - http://www.ruby-doc.org/core/classes/Time.html#M000392

  • 0
    @Kanday: это было бы просто так, если бы я не беспокоился о СУХОЙ ... Ваше изменение в вашем ответе помогло ... Но я думаю, это должно быть жестко закодировано в представлении ... для каждого шаблона страницы. +1 за ваш способ сделать это и ресурс ссылки ..
0

Вы можете использовать, например ActiveSupport:: CoreExtensions:: Время:: Конверсия:: DATE_FORMATS

Вы можете объединиться самостоятельно (в environment.rb), например ActiveSupport:: CoreExtensions:: Время:: Конверсия:: DATE_FORMATS.merge! (: default = > '% m/% d/% Y',: date_time12 = > "% m/% d/% Y% I:% M% p",: date_time24 = > "% m/% d/% Y% H:% M" )

  • 0
    Вы имеете в виду добавление приведенного выше кода в мою environment.rb ..? Я попробовал это .. Это не сработало ...
  • 0
    Я предполагаю, что это также потребовало бы перезагрузки сервера .. как в случае с Beerlington .. Я попробую это так и вернусь обратно, если это будет работать так .. Спасибо за ваш ответ ..

Ещё вопросы

Сообщество Overcoder
Наверх
Меню