我正在尝试在before过滤器中更改用户位置的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
最佳答案
这是问题所在。由于数据库未完全填充,我随后输入的位置出现了Rails错误。除非整个端点请求成功完成,否则实际上不会保存cookie。
在查看了ActionDispatch::Cookies的源代码之后,似乎确实是这种情况:http://api.rubyonrails.org/classes/ActionDispatch/Cookies.html
关于ruby-on-rails - 在Rails 3中更改Cookie值时出现问题,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/5024176/