我有一个事件,想为其开始和结束日期添加 1 天。代码:
params[:event][:start_time] = [:event][:start_time] + 1.day
params[:event][:end_time] = [:event][:start_time] + 1.day
这应该将开始时间和结束时间相加 1 天,但它不起作用。
错误是:
no implicit conversion of Symbol into Integer
有人可以帮忙吗?
最佳答案
这里有两个错误。第一个,是你错过了 params
在表达式的第二部分,因此您将数组的数组分配给有效覆盖 params
的参数.
params[:event][:start_time] = [:event][:start_time] + 1.day
应该是
params[:event][:start_time] = params[:event][:start_time] + 1.day
第二个问题是 params
中存储的值是 String
,而不是日期或整数。因此你需要投值
params[:event][:start_time] = Time.new(params[:event][:start_time]) + 1.day
还有两个额外的潜在问题:(1) 您正在覆盖原始参数,这绝不是一个好的做法 (2) 该值可能是 nil
导致您的应用程序崩溃。
event = params[:event].presence || {}
event[:start_time] = Time.parse(event[:start_time]) + 1.day if event[:start_time]
event[:end_time] = Time.parse(event[:end_time]) + 1.day if event[:end_time]
现在 event
变量保存正确的参数哈希值。
关于ruby-on-rails - 日期时间更改 ruby ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30499361/