如何使用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