Rails 3 Ruby 1.92 - 我有一个帮助方法,将对象的日期时间属性与当前日期&时间。
module StoreHelper
def initial_time(product)
if product.time_type == "Min"
initial_time = (product.time * 60)
elsif product.time_type == "Hrs"
initial_time = (product.time * 3600)
else
initial_time = 0
end
end
def time_based_price(product)
start_time = product.start_time
current_time = Time.now
expire_time = start_time + initial_time(product)
if (current_time <= expire_time) && (unit_sales(product)>= product.volume)
time_based_price = (product.price - product.boost_savings)
else
time_based_price = product.price
end
end
end
当我从我的视图中调用它时,我得到错误“未定义的方法`to_datetime'为0:Fixnum”。如果我将比较线(current_time&lt; = expire_time)更改为(expire_time&gt; = current_time),我会收到错误“Fixnum与时间的比较失败”
我尝试过将.now,.current,.zone.now用于Time和DateTime而没有运气。当我从我的视图中调用Time.zone.now和expire_time值时,它们具有相同的格式:
2013-11-17 20:48:07 UTC - Time.zone.now
2013-11-17 16:15:00 UTC - expire_time
答案 0 :(得分:0)
您是否为列表中的每个产品项调用此方法?在这种情况下,看起来对于其中一个产品,没有为start_time和time_type设置任何值。当expire_time为0时,你会得到这个错误。但是既然你已经尝试了expire_time的值,我相信它必须发生在更多的产品实例上,并且其中一个产品实例失败了。