Я ищу способ, с помощью которого я мог бы преобразовать формат даты по умолчанию в определенный пользовательский формат.
Я работаю над 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. Не могли бы вы предложить подходящий способ. Что-то, что я могу изменить в соответствии с требованиями конечного пользователя.
Спасибо..
Способ 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) %>
Вы можете использовать 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
Вы можете использовать, например 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" )