我正在尝试在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/

10-15 19:11