Выбор даты и времени в Formtastic с указанием пользовательского часового пояса - PullRequest
3 голосов
/ 01 ноября 2011

У нас есть коллекция записей событий в MongoDB с полем datetime schedule_at, которое сохраняется в UTC.У каждого пользователя есть определенный часовой пояс, который мы применяем к временным меткам во внешнем интерфейсе.

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

f.input :scheduled_at, :as => :datetime, :input_html => { :value => event.scheduled_at.in_time_zone(Time.zone) }

Не похоже, что я могу переопределить значение поля таким образом;в выпадающем списке schedule_at по-прежнему отображается только UTC вместо надлежащего Time.zone.Кто-нибудь знает, каков правильный подход к этому?

1 Ответ

0 голосов
/ 08 декабря 2015

В моем случае мне нужно было DateSelectInput, чтобы показать время в UTC (длинная история, для поддержки предыдущих версий).Единственный способ сделать это - создать вход, который наследуется от DateTimeSelectInput в вашем случае (DateSelectInput в моем).Это потому, что Timeish получает значение непосредственно из объекта формы: https://github.com/justinfrench/formtastic/blob/3.1.3/lib/formtastic/inputs/base/timeish.rb#L159 (по крайней мере, в последней версии)

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

class UtcDateSelectInput < Formtastic::Inputs::DateSelectInput
  def value
     super.utc if super.respond_to? :utc
   end

  def as
    'date_select'
  end
end
...