Управление часовым поясом в рельсах многошаговой формы - PullRequest
0 голосов
/ 14 февраля 2020

У меня есть многошаговая форма, которая хранит данные в таблице сеансов. Перед сохранением данных я компенсирую разницу во времени, создавая переменную @offset, которая содержит агент часового пояса.

  @offset = DateTime.now.in_time_zone(params[:event][:time_zone]).utc_offset / 3600
  params[:event][:google_address] = current_user.google_address if params[:event][:google_address].blank?
  params[:event][:start] = DateTime.strptime(params[:event][:start], "%m/%d/%Y %l:%M %P")  - @offset.hours
  params[:event][:end] = DateTime.strptime(params[:event][:end], "%m/%d/%Y %l:%M %P") - @offset.hours
  session[:event_params].deep_merge!(params[:event]) if params[:event]

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

Кто-нибудь знает хитрость, пожалуйста?

1 Ответ

0 голосов
/ 15 февраля 2020

Вы можете сохранить params[:event][:time_zone] в сеансе пользователя, как только у вас есть данные

session[:timezone] = params[:event][:time_zone]

И на предыдущем шаге вы можете получить к нему доступ и отобразить форму соответственно

session[:timezone] # will nil or value

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