Ruby on rails 为什么这在console中有效,而不是在我的应用程序中?

Ruby on rails 为什么这在console中有效,而不是在我的应用程序中?,ruby-on-rails,datetime,bootstrap-datetimepicker,strptime,Ruby On Rails,Datetime,Bootstrap Datetimepicker,Strptime,我试图用一千种不同的方法来解决这个问题,看了几十篇StackOverflow文章,以及关于DateTime、bootstrap datetimepicker、格式化、strTime、strftime等等的外部教程,但都没有解决。我现在有一个基本问题可以帮助我前进 为什么这在我的控制台中工作: DateTime.strptime("09-29-2016 03:29 PM", "%m-%d-%Y %I:%M %p") => Thu, 29 Sep 2016 15:29:00 +0000

我试图用一千种不同的方法来解决这个问题,看了几十篇StackOverflow文章,以及关于DateTime、bootstrap datetimepicker、格式化、strTime、strftime等等的外部教程,但都没有解决。我现在有一个基本问题可以帮助我前进

为什么这在我的控制台中工作:

 DateTime.strptime("09-29-2016 03:29 PM", "%m-%d-%Y %I:%M %p")
   => Thu, 29 Sep 2016 15:29:00 +0000 
但这在我的应用程序中失败:

@image.start_at = DateTime.strptime(params[:start_at].to_s, "%m-%d-%Y %I:%M %p")
=>ArgumentError in ImagesController#create
invalid date
我的起始参数如下所示:

..."start_at"=>"09-29-2016 03:29 PM"},... 
此外,这在我的应用程序中不起作用:

@image.start_at = DateTime.strptime(@image.start_at.to_s, "%m-%d-%Y %I:%M %p")

这应该很好:

@image.start_at = Date.strptime(params[:image][:start_at], "%m-%d-%Y %I:%M %p")
说明:

  • 您不必将其转换为字符串-params中的任何内容都是字符串
  • 由于
    start\u at
    的类型是
    Date
    ,因此应该向其传递
    Date
    对象,而不是
    DateTime
    对象
  • 如果您的
    start\u at
    是日期时间类型(不是日期,如您在评论中所述)

    @image.start_at=DateTime.strtime(参数[:image][:start_at],%m-%d-%Y%I:%m%p”)


    会有用的。

    嗯,这很好。它在我的控制台中运行也很好。您是否尝试在文件顶部添加了
    require'time'
    require'date'
    ?require'date'已出现在我的图像模型中,我一直在尝试解决此问题。我最近将它添加到图像控制器中,只是为了确定我在任何需要它的地方都有它。@AndreyDeineko start_at是我图像参数的一部分。本质上,它是一个列,用于在我的图像模型上存储日期。我正在尝试使用美式的日期和时间,该日期和时间的格式适合于后端的rails。我现在在ImagesController中收到此错误
    TypeError#没有将nil隐式转换为字符串
    我在错误中传递的参数仍然是这样的`“开始时间”=>“09-29-2016 04:28 PM”},“所以我不明白为什么它会考虑它<代码> NIL。@ Lenocam请在代码> > IMAG.StasyAt=…./COD>代码和调试之上添加一个<代码>绑定。意思是当rails服务器终端窗口打开控制台时,输入:
    params[:start_at]
    -确保它在那里。然后,运行实际的代码,看看它是否有效。因此,我在控制台中运行pry并键入params[:start_at],它响应
    nil
    ,我不明白为什么它会为nil。“运行实际代码”是什么意思?@Lenocam这就是答案,您刚刚检查了params中是否有它-您没有-因此出错。只是一个健全的检查:你能运行
    params
    并在这里添加输出吗?
    =>{“utf8”=>“✓",  "“Vkvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvv8)真真真真真真真性(tototo身份身份身份身份身份身份身份身份身份身份身份身份身份身份身份身份身份身份身份身份身份身份身份身份身份身份身份身份身份身份身份身份身份身份身份身份身份身份身份身份身份身份身份身份身份身份令牌令牌令牌令牌令牌令牌(To权权权权权权权权权权权权权权权权权权权权权权权权权权权权权权权权权权权权权权权权权权,“25”],“开始时间”=>“09-29-2016 04:45 PM”},“提交”=>“创建映像”、“控制器”=>“映像”、“操作”=>“创建”、“用户id”=>“25”}