{"scheduletime(1i)"=>"2014", "schedul-6ren">
gpt4 book ai didi

ruby-on-rails - ArgumentError 在 Ruby 版本 1.8.6 上创建 Time 类的实例

转载 作者:太空宇宙 更新时间:2023-11-03 18:19:27 24 4
gpt4 key购买 nike

我正在尝试使用 datetime_select 从 View 中获取时间值,获得的返回值为:

"scheduletime"=>{"scheduletime(1i)"=>"2014", "scheduletime(2i)"=>"1", "scheduletime(3i)"=>"9", "scheduletime(4i)"=>"10", "scheduletime(5i)"=>"33"}

在 Controller 中,我尝试使用 datetime_select 的返回值创建 Time 类的实例。通过以下方式。

schedule_time = Time.new(params[:scheduletime]["scheduletime(1i)"], params[:scheduletime]["scheduletime(2i)"], params[:scheduletime]["scheduletime(3i)"], params[:scheduletime]["scheduletime(4i)"], params[:scheduletime]["scheduletime(5i)"],0, "+09:00")

尝试此操作时出现以下错误。

ArgumentError (wrong number of arguments (7 for 0))

我使用的 ruby​​ 版本是 1.8.6 。谁能告诉我哪里出错了。

最佳答案

Time.new 在 Ruby 1.8.6 中不允许任何参数。查看official documentation .

a = Time.new      #=> Wed Apr 09 08:56:03 CDT 2003
b = Time.new #=> Wed Apr 09 08:56:03 CDT 2003
a == b #=> false
"%.6f" % a.to_f #=> "1049896563.230740"
"%.6f" % b.to_f #=> "1049896563.231466"

我的建议是使用Time.utc为了创建具有给定参数的日期。

您可以使用 Hash#valutes_at 重写代码

Time.utc(*params[:scheduletime].values_at(%w( scheduletime(1i) scheduletime(2i) scheduletime(3i) scheduletime(4i) scheduletime(5i) )))

请注意 Time.utc 也接受一个可选的时区(假设我看到您正在传递一个时区)。


附带说明一下,您肯定需要升级您的 Ruby 版本。

关于ruby-on-rails - ArgumentError 在 Ruby 版本 1.8.6 上创建 Time 类的实例,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21024954/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com