Текстовое поле с датой, как я могу изменить формат даты, который ожидает Rails? - PullRequest
0 голосов
/ 30 октября 2010

У меня есть текстовое поле, которое заполняется датой из jQuery UI Datepicker.В зависимости от формата даты, который пользователь выбрал в своем профиле на моем сайте, средство выбора даты либо заполнит текстовое поле с помощью ДД-ММ-ГГГГ, либо ММ-ДД-ГГГГ.Если дата указана в формате ДД-ММ-ГГГГ, Ruby on Rails интерпретирует это правильно и дата сохраняется правильно.Но когда это MM-DD-YYYY, Ruby on Rails по-прежнему считает, что это DD-MM-YYYY, поэтому дата хранится неправильно.Как я могу изменить формат даты, который ожидает Rails?

Ответы [ 4 ]

1 голос
/ 30 октября 2010

Вы можете использовать Date.strptime, чтобы использовать любой формат, который вы хотите:

>> RUBY_DESCRIPTION
=> "ruby 1.8.7 (2009-06-12 patchlevel 174) [universal-darwin10.0]"

>> require 'date'
=> true

>> Date.strptime('03/04/2010', '%d/%m/%Y').strftime('%c')
=> "Sat Apr  3 00:00:00 2010"

>> Date.strptime('03/04/2010', '%m/%d/%Y').strftime('%c')
=> "Thu Mar  4 00:00:00 2010"

Таким образом, первый - это 03 в качестве дня месяца, а второй - какмесяц.

1 голос
/ 30 октября 2010

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

Если через два месяца вы добавите новую локаль для своего приложения, вам нужно будет только изменить свойвид, а не код вашего сервера!

Одним из решений должно быть использование скрытого поля.Скрытое поле заполняется форматом, с которым работает сервер (например, формат% d /% m /% Y).Текстовое поле, используемое для выбора даты, должно быть простым text_field_tag, которое будет игнорироваться Rails.

Используйте обратный вызов onSelect: http://jqueryui.com/demos/datepicker/#event-onSelect

, чтобы заполнить скрытое поле хорошим форматомпользователь выбирает новую дату в указателе даты:).

0 голосов
/ 31 октября 2010

Может быть, это поможет.

a = "10-30-2010".split('-')
a[0],a[1] = a[1],a[0]
a = a.join('-')
0 голосов
/ 30 октября 2010

Вы можете отправить параметр с вашей датой (то есть: reverse => true), чтобы в контроллере вы могли при необходимости поменять местами цифры до того, как Rails проанализирует дату.

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