此代码突然停止工作,我不明白为什么。
class MyClass < ApplicationController
...
def method
@myobject = @my_objects.order(:updated_at).last
if stale?(@myobject)
...
end
end
end
问题出在如果陈旧?(@ myobject),错误是
MyClass中的NoMethodError#my_method
undefined method`httpdate'for“2016-10-23 20:44:26 UTC”:String
actionpack(5.0.0.1)lib / action_dispatch / http / cache.rb:64:in`last_modified ='
通过替换代码来解决问题:
class MyClass < ApplicationController
...
def my_method
@myobject = @my_objects.order(:updated_at).last
t = Time.parse(@myobject.updated_at)
if stale?(etag: @myobject, last_modified: t)
...
end
end
end
但第一个版本也应该由API doc起作用并且它有效!
我想了解导致第一版不可行的原因并解决问题。我最近所做的一切 - Debian软件包升级,但我认为这不是原因。
OS:Debian GNU / Linux 8.6(jessie)
Ruby版本:ruby-2.3.0 [x86_64](rvm)
Rails版本:5.0.0.1
答案 0 :(得分:0)
这可能是因为日期 - 时间字段。每当你使用它时,你需要解析Time.parse的时间或Date.parse的日期。时区也是一个主要问题。
请参考rails Doc。