Как изменить формат даты с типа по умолчанию в Rails 2.0.2 с использованием MySQL 5.1 - PullRequest
0 голосов
/ 18 января 2011

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

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

Моя команда scaffold выглядит следующим образом: -

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

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

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

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

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

Кроме того, я предполагаю, что если жестко запрограммировано, это будет СУХОЕ (не повторять себя) нарушение, идущее против принципов Rails.Не могли бы вы предложить соответствующий путь.Что-то, что я могу изменить в соответствии с требованиями конечного пользователя.

Спасибо ..

Ответы [ 3 ]

1 голос
/ 18 января 2011

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

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

Rails позаботится о преобразовании его туда и обратно ..

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

0 голосов
/ 18 января 2011

То, как 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 голосов
/ 18 января 2011

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

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...