我正在尝试保存正在添加到计划中的类的记录,然后获取开始日期并一次添加一周将其他条目添加到数据库中,直到我到达结束日期。这是我的控制器方法
def schedule_class
@program_schedule = ProgramSchedule.new(params[:program_schedule])
if @program_schedule.save
@program_schedule.schedule_classes
end
end
因此,如果我成功保存模型,我会在模型中调用此方法
def schedule_classes
class_start = Date.parse(self.first_date, '%m/%d/%Y')
until class_start > self.last_date.to_date
schedule = Schedule.new
schedule.program_schedule_id = self.id
schedule.start_date = class_start.to_s + ' ' + self.start_time
schedule.end_date = class_start.to_s +' ' + self.end_time
schedule.deleted = false
schedule.save
class_start.to_time.advance(:week => 1).to_date
end
end
我得到的错误是$ _ value需要是String(nil given)
我在这一行得到了这个错误:class_start = Date.parse(self.first_date,'%m /%d /%Y')
这些是program_schedule
中的参数{"commit"=>"Schedule Class",
"authenticity_token"=>"MRtbXnPNq/xLr74awXfS4ksG/NK92aLwsogC8R8IHB0=",
"utf8"=>"✓",
"program_schedule"=>{"program_id"=>"1",
"end_time"=>"01:00 am",
"last_date"=>"08/25/2011",
"first_date"=>"07/21/2011",
"week_day_id"=>"5",
"start_time"=>"12:00 am"}}
由于模型具有所有值,我不确定nil值错误的来源。
答案 0 :(得分:0)
我使用以下
修复了它class_start = DateTime.parse(self.first_date.to_date.to_s + ' ' + self.start_time.strftime('%I:%M%p'))
由于它们是日期时间对象,我需要将日期从一个中删除,另一个时间从另一个中删除,以创建我需要的实际日期时间。