Как изменить формат даты и времени для представлений (с i18n?) - PullRequest
0 голосов
/ 16 ноября 2011

У меня проблемы с работой с форматом даты и времени.Текущая ситуация: у меня есть база данных с несколькими полями с указанием даты и времени.Формат как 2011-11-16 15:07:00 UTC.Я хотел бы изменить этот формат во всем приложении.Мне все равно, сохранится ли он таким образом в базе данных, но я хочу, чтобы он был немного более удобным для клиентов в соответствующих представлениях (я из Германии, так что это будет 16.11.2011 15:07).Я пытался использовать I18n, который работал по крайней мере на несколько частей.Я создал локаль (и добавил default_locale в application.rb).Есть ли способ, которым рельсы используют эту локаль, не изменяя соответствующие представления?Я не смог его найти, поэтому я (успешно) попробовал следующее:

Для моего индексного просмотра я работал с небольшой функцией в application_helper.rb:

    module ApplicationHelper  
       def nice_date_form(the_date)
          if !the_date.nil? 
             I18n.l the_date, :format => :short
          end
       end
    end

Задачахвозникла, когда я пытался использовать этот подход с редактированием / новыми представлениями (_form.html.erb), он просто не работал вообще.Через некоторое время я наткнулся на RailsCast о виртуальных атрибутах темы, которые хотя бы временно решили мою проблему.Я могу использовать метод получения и установки в модели, но для разных таблиц и полей, которые будут много повторяться.

_form.html.erb:

    (...)
    <div class="field">
    <%= f.label :abfahrt %><br />
    <%= f.text_field :nice_date_edit %> 
    </div>
    (...)

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

Несколько советов будет с благодарностью!Заранее спасибо.

Кристиан

Ответы [ 2 ]

2 голосов
/ 16 ноября 2011

Вы можете использовать strftime () для форматирования даты и времени в метке представления (удобно для пользователя в соответствующих представлениях).

Ваш вспомогательный метод может быть

module ApplicationHelper  
   def nice_date_form(the_date)
      if !the_date.nil? 
         the_date.strftime(“%d.%m.%y %H:%M”)
      end
   end
end

Подробнее см. В Rails Datetime Format

1 голос
/ 16 ноября 2011

Ознакомьтесь с этим сообщением о создании часовых поясов пользователя: http://railscasts.com/episodes/106-time-zones-in-rails-2-1

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