Изменить формат для ввода даты в Rails 3? - PullRequest
0 голосов
/ 04 июня 2011

Я использую text_field для ввода даты в Rails 3 и хотел бы, чтобы дата была отформатирована как mm/dd/yyyy.

Хотя я нашел несколько решений для отображения даты таким образом, я не сталкивался с работоспособным методом принятия этого формата в качестве ввода.

Проблема в том, что в случае неоднозначных дат, таких как "09/05/2011", Rails интерпретирует его как "9 мая", а не "5 сентября".

Каков наилучший способ заставить Rails 3 интерпретировать эти типы входных данных в соответствии с форматом mm/dd/yyyy?

Ответы [ 2 ]

3 голосов
/ 04 июня 2011

Надеюсь, ваша целевая аудитория исключительно американская, поскольку этот формат даты не используется во многих местах за пределами США.

В любом случае, вы просто хотите проверить формат строки:

validates_format_of :the_date, :with => /^[0-9]{2}\/[0-9]{2}\/[0-9]{4}$/

Это очень простой шаблон, который проверяет формат строки, но не фактические значения между разделителями. Если вы хотите это сделать, лучше всего просто попытаться разобрать дату с Date#strptime и посмотреть, будет ли она разбираться или нет.

1 голос
/ 04 августа 2011

Я столкнулся с проблемой, когда пользователи заполняли текстовое поле месяцем / днем ​​/ годом.Но из-за нового разбора Даты Rails признал, что они ввели день / месяц / год.Я решил это путем исправления Date._parse в Rails.Поэтому я добавил date_patch.rb в папку инициализаторов.

require 'time'

class Date
  class << self
    alias :org_parse :_parse

    # switch the month and day field for expecting US dates
    def _parse(str, comp=true)
      str = str.sub(/(\d{1,2})\/(\d{1,2})\/(\d{1,4})/, '\2/\1/\3')
      org_parse str, comp
    end
  end
end
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...