我有一个表格,我想简化。我正在录制一个开始日期和结束日期,但是想要向用户显示一个开始日期,然后向下显示一个天数。
但我的模型出现问题并正确存储。
第一部分有效。
def date=(thedate)
#puts the startdate in the correct format...
self.startdate = Date.strptime(thedate, '%m/%d/%Y')
end
我遇到的问题与结束日期基于startdate + no_days这一事实有关,而no_days本身就是一个虚拟属性。我尝试将第二部分作为after_validation回调,但它似乎不起作用。
def set_dates
if self.startdate
self.enddate = self.startdate + days
end
end
答案 0 :(得分:1)
首先,为什么需要在startdate中转换日期属性?为什么不在表单中使用f.date_select :startdate
之类的内容?
然后,在您的模型中,您需要attr_accessor :number_of_days
这样的内容,您可以使用f.select :number_of_days, (1..10).to_a
将number_of_days作为整数添加到表单中(根据需要设置数组)。
您可以通过以下方式设置回调:
after_validation :set_enddate
def set_enddate
if self.startdate
self.enddate = self.startdate + self.number_of_days.days
end
end