Если Вы уже не записали это и находите, что у Вас есть проблема производительности, я не волновался бы, о котором более быстро. Пойдите с тем, который это более читаемо. Помните, "Преждевременная оптимизация является корнем всего зла". - Donald Knuth
Некоторые отличные предложения, однако, в тех случаях, когда вы действительно хотите, чтобы ваше текстовое поле даты было отформатировано определенным образом (скажем, вы интегрируетесь с javascript-пикером дат), и вы имеете дело с nils, я думаю, что простая небольшая доработка существующего метода сделала бы трюк:
:value => (@object.start_date.blank? ? '' : @object.start_date.strftime('%m/%d/%Y'))
Я могу думать о трех способах:
1) Создание нового метода в модели, который будет форматировать вашу дату, но вам нужно, чтобы это было
2) Создание вспомогательного метода, который будет делать то же самое
3) Вы пробовали сделать:
<%= text_field
:my_object,
:start_date,
:value => @my_object.try(:start_date).try(:strftime,'%m/%d/%Y') %>
Если ваша форма привязана к объекту (что-то вроде <% form_for (: object) do | f |%>
), вы должны использовать <% = f.text_field: start_date,: value => f.object.start_date.to_s (: date_format)%>
, тогда вы можете зарегистрировать свой : date_format
в config / environment.rb
Not конечно, зачем вы хотите это сделать, но я надеюсь, что это сделано только для целей презентации.
, если вы не хотите вводить дату в текстовое поле, но в поле выбора, которое менее подвержено ошибкам, вы можете использовать ActionView :: Helpers :: DateHelper , select_date () . см. Доступ к переменным date (), отправляемый от помощника по дате в rails здесь, в SO, о том, как обрабатывать возвращаемые значения.