【发布时间】:2014-08-07 07:42:21
【问题描述】:
我有一个名为 @start_time 和 @end_time 的变量,它是 Rails 中的 DateTime 对象:
@start_time = params[:start_time]
@end_time = @start_time + 30.minutes
在我的控制器中出现错误:
undefined method '+' for nil:NilClass
我读到“Time manipulation in ruby”说我可以将30.minutes 添加到 DateTime 类对象中。
我的@start_time 由用户在名为“新”的视图中设置。我还确认@start_time 具有正确的值并将它们传递给控制器。
我的问题是增加 30 分钟。
<div class="form-group">
<%= f.label 'Lesson Start' %>
<%= f.datetime_select :start_time, class: "form-control", ampm: true %>
</div>
当我调试传入的 POST 信息时,它给了我这个:
(byebug) params
{"utf8"=>"✓", "authenticity_token"=>"3ZUkfyga9SxuZqSWo8RWAIcRPHvYisQUxapgXt4Zx8E=", "lesson"=>{"user_id"=>"1", "student_id"=>"1", "start_time(1i)"=>"2014", "start_time(2i
)"=>"8", "start_time(3i)"=>"7", "start_time(4i)"=>"10", "start_time(5i)"=>"10"}, "lesson_length"=>"45", "commit"=>"Schedule Lesson", "action"=>"create", "controller"=>"le
ssons"}
我在控制器中尝试了这样的参数:
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
【问题讨论】:
-
您在哪里定义了
@start_time?它以nil的形式出现。 -
@Pavan 对于这个例子,让我们说它是“现在”。我将编辑我的示例,向您展示它是由用户设置的。
-
我想你是对的,我的问题不仅仅是增加时间。例如,我在它前面添加了
@start_time = DateTime.now行。有效。虽然,我的页面显示它正在传递值。 -
是的!这就是我的意思。应该为
@start_time定义一些值,然后只有这个@end_time = @start_time + 30.minutes会执行。