#formtastic
#formtastic
Вопрос:
У нас есть коллекция записей событий MongoDB с полем даты и времени scheduled_at, которое сохраняется в UTC. У каждого пользователя есть определенный часовой пояс, который мы применяем к меткам времени во внешнем интерфейсе.
Я не могу понять, как заставить выбор даты и времени formtastic учитывать часовой пояс пользователя при редактировании данной записи события. Фрагмент кода выглядит следующим образом:
f.input :scheduled_at, :as => :datetime, :input_html => { :value => event.scheduled_at.in_time_zone(Time.zone) }
Не похоже, что я могу переопределить значение поля таким образом; раскрывающиеся списки scheduled_at по-прежнему просто показывают UTC вместо правильного Time.zone. Кто-нибудь знает, каков правильный подход для этого?
Комментарии:
1. Вы когда-нибудь определяли решение для этого?
Ответ №1:
В моем случае мне нужно было 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