Я уже задавал подобный вопрос по этому вопросу, однако, увидев Railscast об использовании текстовых полей - Райан рекомендует использовать виртуальный атрибут.
Я настроил свою модель с виртуальным атрибутом так:
attr_accessible :title, :description, :start, :start_string
def start_string
unless start.nil?
start.to_s(:db)
end
end
def start_string(start_str)
self.start = Date.parse(start_str)
rescue ArgumentError
@start_invalid = true
end
def validate
errors.add(:start, "is invalid") if @start_invalid
end
Я включил это в свой вид редактирования так:
<div class="field">
<%= f.label :start_string %> <br />
<%= f.text_field :start_string %>
<%#= f.date_select(:start, :order => [:month, :day, :year], :end_year => Time.now.year + 10) %>
</div>
Однако при загрузке формы редактирования я получаю сообщение об ошибке
wrong number of arguments (0 for 1)
Я также знаюЭто очень старый Railscast, и кто-то комментирует событие:
«Как сказал Рейн, если вы добавите nil? check в метод getter, все должно получиться нормально!»
Нет.Код устарел для использования сегодня.Есть более эффективные способы сделать это сейчас
Итак, как правильно сделать это сейчас?Похоже, простой и прямой способ сделать это ... если бы я не получил ошибку!