我正在尝试更改过滤器中用户位置的Cookie,但遇到问题:
如果cookie不存在,则会正确设置为1,但不会永久保存,并且对于任何后续请求都会恢复为1。
def remember_location(loc = nil)
cookies.permanent[:location] = 1 if cookies[:location].nil?
loc = Location.find(loc).try(:id) rescue nil
unless loc.nil?
# cookies.delete :location # => this doesn't work either
cookies.permanent[:location] = loc
end
cookies[:location]
end
答案 0 :(得分:1)
这是问题所在。我之后输入的位置给出了Rails错误,因为DB没有完全填充。除非整个端点请求成功完成,否则cookie实际上不会被保存。
在查看ActionDispatch :: Cookies的源代码之后,情况确实如此:http://api.rubyonrails.org/classes/ActionDispatch/Cookies.html