我有一个名为@start_time和@end_time的变量,它是rails中的DateTime对象。 拥有代码
@start_time = params[:start_time]
@end_time = @start_time + 30.minutes
在我的控制器中我收到错误undefined method '+' for nil:NilClass
我在这里读过帖子,说你可以在一个DateTime类对象上添加30.minutes。
我的@start_time由用户在名为“new”的视图中设置。我还确认@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
答案 0 :(得分:1)
您没有将表单数据分配给实例变量。
在您的新方法中,您需要明确地执行此操作
def create
@start_time = params[:start_time]
...
end