Rails DateTime类添加分钟和秒

时间:2014-08-07 07:42:22

标签: datetime ruby-on-rails-4

我有一个名为@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。

Time manipulation in ruby

我的@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

1 个答案:

答案 0 :(得分:1)

您没有将表单数据分配给实例变量。

在您的新方法中,您需要明确地执行此操作

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