Rails:解析日期的问题

时间:2011-07-22 04:44:31

标签: ruby-on-rails ruby-on-rails-3 date

我正在尝试保存正在添加到计划中的类的记录,然后获取开始日期并一次添加一周将其他条目添加到数据库中,直到我到达结束日期。这是我的控制器方法

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值错误的来源。

1 个答案:

答案 0 :(得分:0)

我使用以下

修复了它
class_start = DateTime.parse(self.first_date.to_date.to_s + ' ' + self.start_time.strftime('%I:%M%p'))

由于它们是日期时间对象,我需要将日期从一个中删除,另一个时间从另一个中删除,以创建我需要的实际日期时间。