我在向DateTime
对象添加时间值时遇到问题。控制器操作从表单获取值:
task_form.start_at
- DateTime task_form.remind_value
- 字符串,例如"2"
task_form.remind_space
- 字符串,例如"minutes"
,"hours"
,"days"
我想发送像
这样的方法remind_time = task_form.start_at + send("#{task_form.remind_value}.#{task_form.remind_space}")
但我得到NoMethodError: undefined method '2.days'
。有什么方法可以使用这样的方法吗?
答案 0 :(得分:0)
您正在尝试调用方法' 2.days'在我自己(控制器,我猜),但你需要打电话给'天' task_form.remind_value
返回的整数对象的方法试试这个:
remind_time = task_form.start_at + task_form.remind_value.send(task_form.remind_space)
答案 1 :(得分:0)
Rails提供Date#advance
方法:
start_at = DateTime.new(2014, 9, 18)
remind_value = "2"
remind_space = "days"
start_at.advance(remind_space.to_sym => remind_value.to_i)
#=> Sat, 20 Sep 2014 00:00:00 +0000