我正在开发一个基于session_id的简单购物车,即用于确定使用session_id的用户购物车项目。
但是当用户关闭浏览器然后再次打开它时,会话id被更改。他把购物车里所有的东西都丢了。
我怀疑这样的功能我可以提供保存会话id在cookie。
我说的对吗?
无论如何我的问题是如何提供一个功能,允许用户获得他们的购物车项目,即使关闭浏览器后?
我推荐阅读Rails指南:动作控制器概述(http://guides.rubyonrails.org/action_controller_overview.html)。
第4节和第5节将介绍会话和cookie,并将使您更深入地了解如何使用它们,并将使其更容易应对未来的挑战。
我还会检查Ruby on Rails ActionDispatch::Cookies
您正在查找的控制器代码示例在此资源中列出。下面是一个例子:
# Sets a cookie that expires in 1 hour.
cookies[:login] = { :value => "XJ-122", :expires => 1.hour.from_now }
cookies[:your_cookie] = {
:value => "your_cookie_value",
:expires => 100.years.from_now
}
Rails默认将会话存储在cookie中。你可以影响它cookie在浏览器重新启动后仍然存在(见下文)。
cookie不会在浏览器之间共享。永远。
如果你想用Opera查看你刚刚在Firefox中创建的购物车,你需要以某种方式验证商店,例如使用用户名和密码。
请参阅Rails 3额外的会话配置选项(key, expires_after, secure),了解会话的所有配置选项的描述。
您将需要查看:expire_after,例如
:expire_after => 24.hours