Рельсы образуют переворачивающиеся дни и месяцы - PullRequest
0 голосов
/ 02 февраля 2020

У меня есть форма, которая получает даты через две переменные: start и: end. Когда я ввожу дату, они выглядят правильно, но когда я сохраняю, модель получает дату с переставленными днями и месяцами, а когда день больше 12, скажем, 13 марта, она просто покажет нулевую ошибку. Поле моей формы выглядит так:

<div class="input-group date" id="datetimepicker4" data-target-input="nearest">
      <%= f.text_field(:start, value: f.object.start ? f.object.start.strftime('%m/%d/%Y %l:%M %p') : nil, class: "form-control datetimepicker-input", data: {target: "#datetimepicker4"}, placeholder: "#{t :From}", required: true) %>
      <div class="input-group-append" data-target="#datetimepicker4" data-toggle="datetimepicker">
        <div class="input-group-text"><span class="fas fa-calendar-alt"></span></div>
      </div>
    </div>

То же самое для :end переменная

Форма ввода выглядит так: Form picture with right dates

Результаты выглядит так:

Saved result with incorrect date

1 Ответ

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

Похоже, вы пытаетесь использовать формат даты в США, но rails анализирует отправленные параметры с переключением месяца и дня. Я не уверен, что вы бы предпочли использовать американский или международный формат даты, и я советую вам проверить, как rails обрабатывает синтаксический анализ отправленных параметров.

Также обратите внимание на значения по умолчанию используемого вами календаря.

ОБНОВЛЕНИЕ. Я постараюсь предоставить более подробную информацию. В одном из моих проектов я использую подобный инструмент выбора даты и времени, который выглядит следующим образом:

datetime picker

После отправки вы получите следующие параметры в нашем контроллере {"date_time_picker_input_field"=>"2020-01-20"}. Причина, по которой мой инструмент выбора даты и времени форматирует дату как YYYY-MM-DD, заключается в том, что в коде представления я использую опцию, которая берется кодом datetimepicker при инициализации, что-то вроде

date_format: 'yyyy-mm-dd',

(это может отличаться в используемом вами сборщике даты и времени, и я предложил ранее проверить документацию по опциям, которые вы можете использовать).

Мне не нужно использовать strftime для даты, предоставленной text_field , потому что дата и время JS код будет форматировать дату в формате по вашему выбору.

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