3

我正在开发一个基于 session_id 的简单购物车,即用于确定用户购物车项目使用 session_id。

但是当用户关闭浏览器然后再次打开它时,会话 ID已更改。他丢失了购物车中的所有物品。

我怀疑我可以通过在 cookie 中保存会话 ID来提供这样的功能。

我对吗?

无论如何,我的问题是如何提供一种功能,即使在关闭浏览器后也允许用户获取他们的购物车物品?

4

3 回答 3

5

我建议阅读 Rails 指南:动作控制器概述 ( http://guides.rubyonrails.org/action_controller_overview.html )。

第 4 节和第 5 节涵盖会话和 Cookie,让您更深入地了解如何使用它们,并更容易应对未来的挑战。

我还会查看 Ruby on Rails ActionDispatch::Cookies < Object Documentation ( http://api.rubyonrails.org/classes/ActionDispatch/Cookies.html )

此资源中列出了您正在寻找的控制器代码示例。这是一个例子:

# Sets a cookie that expires in 1 hour.
cookies[:login] = { :value => "XJ-122", :expires => 1.hour.from_now }
于 2013-05-04T18:21:09.480 回答
3
cookies[:your_cookie] = {
    :value => "your_cookie_value",
    :expires => 100.years.from_now
}

有关更多详细信息,请查看

于 2013-05-04T18:09:58.383 回答
2

默认情况下,Rails 将会话存储在 cookie 中。您可以影响 cookie 是否存在于重新启动浏览器之后(见下文)。

Cookie 不会在浏览器之间共享。曾经。

如果您想使用 Opera 查看您刚刚在 Firefox 中创建的购物车,您需要以某种方式对商店进行身份验证,例如使用用户名和密码。

有关会话的所有配置选项的描述,请参阅Rails 3 附加会话配置选项(key、expires_after、secure)

例如,您会想要查看 :expire_after

:expire_after => 24.hours

(在这里找到:在 Rails 3 中设置会话超时

于 2013-05-04T18:02:08.120 回答