Rails3/jQuery UI Datepicker — месяц и день меняются местами при сохранении

(Моя проблема почти такая же, как , описанная в этом вопросе , только этот ответ не работает в моем случае.)


Я использую jQuery UI Datepickerв приложении Rails с базой данных Postgres. Реализация по умолчанию использует формат даты мм/дд/ггдля отображения выбранной даты, что мне и нужно. Однако после того, как я сохраню запись в базе данных, месяц и день меняются местами — тогда они отображаются как гг-дд-мм. Поэтому выбор 11.03.2012 пытается сохранить как 3 ноября вместо 11 марта, а дата вроде 31.03.2012 вообще не сохраняется, потому что не существует.

Пока что я использовал 3 разных способа, пытаясь исправить это:

1) Первая попытка состояла в том, чтобы переформатировать текстовое поле, чтобы дисплей выглядел так, как я хотел:

<%= f.text_field :foo, :value => (@model.foo.blank? ? '' : @model.foo.strftime('%m/%d/%Y')), class: "datepicker" %>

31.03.2012 отображалось правильно. изначально, но все равно переворачивается при сохранении.

2) Затем я попытался изменить способ хранения дат по умолчанию, думая, что это решит проблему. Как описано в ответе на этот вопрос, я добавил в config/locales/en.ymlследующее:

# config/locales/en.yml
en:
  date:
    formats:
      default: "%m/%d/%Y"

Это не имело никакого значения. Затем я нашел этот вопроси попытался создать config/initializers/date_formats.rbсо следующими строками:

Date::DATE_FORMATS[:default]="%m/%d/%Y"
Time::DATE_FORMATS[:default]="%m/%d/%Y %H:%M"

То же, что и выше, без разницы.

3) Поиграв с большим количеством комбинаций, я обнаружил, что работа DID заключается в указании формата гггг-мм-дд в моем вызове плагина datepicker — это противоположно тому, что я хотел, но, по крайней мере, даты могут быть успешно сохранены. Таким образом, вызов средства выбора даты выглядит следующим образом:

$( ".datepicker" ).datepicker({ dateFormat: 'yy-mm-dd' });

При выборе 31 марта в календаре поле заполняется 2012-03-31, и после сохранения все еще отображается как 2012-03-31.

Но как заставить средство выбора даты работать с форматом мм/дд/гг? Я не могу представить, что это сложно сделать, но что я упускаю? Должен ли я что-то делать с тем, как даты хранятся в Postgres? (Они указываются как дата, а не дата-время.)

14
задан Community 23 May 2017 в 11:53
поделиться