рельсы datetime в отдельных полях - PullRequest
1 голос
/ 21 декабря 2009

Возможно, я слишком усложнил то, что мне нужно сделать, но теперь это то, что у меня есть.

У меня есть контроллер заданий, который имеет 2 поля

starts_at as DATETIME
end_time as DATETIME

Я сохраняю дату события в форме, используя

calendar_date_select :starts_at ,:time => false

Я сохраняю дату как

time_select :starts_at, {:twelve_hour => true}

Это сохраняет дату события, т.е. 26.12.2009, и время начала как 7:00 вечера

Мне нужно также сохранить событие end_time без повторного ввода даты, просто время

time_select :end_time, {:twelve_hour => true}

Если я просто использую вышеупомянутое, время будет правильным, но дата по умолчанию будет 01/01/2000

Как сохранить дату с той же датой из start_at?

Ответы [ 2 ]

0 голосов
/ 21 декабря 2009

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

Если вам действительно не нужны два календаря, возможно, используйте скрытое поле для даты окончания, которая следует за датой начала.

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

0 голосов
/ 21 декабря 2009

В вашем контроллере, если :end_time равен nil, установите для него переменную: start_at следующим образом:

object.end_time = object.starts_at unless not object.end_time.nil?

Возможно, вы сможете сократить конец до

object.end_time = object.starts_at unless object.end_time.present?

но я не уверен, какую версию Rails вы используете и что стандартная реализация .present? делает для дат.

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