Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby-on-rails-4/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何使用Rails';DateTime类以添加分钟和秒_Datetime_Ruby On Rails 4 - Fatal编程技术网

如何使用Rails';DateTime类以添加分钟和秒

如何使用Rails';DateTime类以添加分钟和秒,datetime,ruby-on-rails-4,Datetime,Ruby On Rails 4,我有一个名为@start\u time和@end\u time的变量,它是Rails中的DateTime对象: @start_time = params[:start_time] @end_time = @start_time + 30.minutes 在我的控制器中,我得到错误: undefined method '+' for nil:NilClass 我读到“”,上面说我可以向DateTime类对象添加30.minutes 我的@start\u time由用户在名为“new”的视图中设

我有一个名为
@start\u time
@end\u time
的变量,它是Rails中的DateTime对象:

@start_time = params[:start_time]
@end_time = @start_time + 30.minutes
在我的控制器中,我得到错误:

undefined method '+' for nil:NilClass
我读到“”,上面说我可以向DateTime类对象添加
30.minutes

我的
@start\u time
由用户在名为“new”的视图中设置。我还确认
@start\u time
具有正确的值,并且正在将它们传递到控制器中

我的问题是增加30分钟

<div class="form-group">
      <%= f.label 'Lesson Start' %>
      <%= f.datetime_select :start_time, class: "form-control", ampm: true %>
</div>
我在控制器中尝试了以下参数:

def create
    @lesson = Lesson.new(lesson_params)
    @current_date = params[:date] || Date.today
    @start_time = params[:start_time]
    @end_time = @start_time + 30.minutes
end

def lesson_params
    params.require(:lesson).permit!
end

您没有将表单数据指定给实例变量

在新方法中,您需要显式地执行此操作

def create
  @start_time = params[:start_time]
  ...
end

您在哪里定义了
@start\u time
?它的名称是
nil
@Pavan对于这个例子,我们就说它是“现在”。我将编辑我的示例,向您展示它是由用户设置的。我想您是对的,我的问题不仅仅是添加时间。我在前面添加了一行
@start\u time=DateTime.now
,举个例子。成功了。虽然,我的页面显示了它传递的值。是的!这就是我的意思。应该为
@start\u time
定义一些值,然后只有这个
@end\u time=@start\u time+30。分钟
将执行。噢,哈哈。那就相当简单了。我想这是因为命名惯例。谢谢你的帮助!没关系,这些是日/月/年的细分。。。开始时间应该还可以。你能检查一下参数吗<代码>定义新建;p'*'*80;p参数[:开始时间];p'*'*80…这应该会在你的服务器上打印开始时间,很容易发现,因为它会被一排80颗星包围。啊,哇,我是个白痴!当然,表单数据返回到
create
update
,而不是
new
。您不需要将参数一起添加。将“pry”gem添加到您的项目中进行开发和测试,然后在
def create
之后插入新行
绑定。pry
在开发模式下运行,当控制台停在pry处时,键入
params
查看参数是什么。然后键入
exit
继续作业。
def create
  @start_time = params[:start_time]
  ...
end