字符串方法的DateTime对象+小时|天|月

时间:2014-09-18 09:46:13

标签: ruby-on-rails ruby

我在向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'。有什么方法可以使用这样的方法吗?

2 个答案:

答案 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