在Rails中更改Cookie值的问题3

时间:2011-02-17 01:27:55

标签: ruby-on-rails cookies

我正在尝试更改过滤器中用户位置的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

1 个答案:

答案 0 :(得分:1)

这是问题所在。我之后输入的位置给出了Rails错误,因为DB没有完全填充。除非整个端点请求成功完成,否则cookie实际上不会被保存。

在查看ActionDispatch :: Cookies的源代码之后,情况确实如此:http://api.rubyonrails.org/classes/ActionDispatch/Cookies.html