【发布时间】:2014-10-21 12:26:34
【问题描述】:
我该怎么做,在用户将某些东西添加到购物车后,并在重新打开 rails 后离开浏览器(关闭)恢复它的会话,并且用户可以购物更多... 现在我有这样的
class ApplicationController < ActionController::Base
protect_from_forgery
before_filter :current_cart
private
def current_cart
Cart.find(session[:cart_id])
@cart = Cart.find(session[:cart_id])
rescue ActiveRecord::RecordNotFound
cart = Cart.create
session[:cart_id] = cart.id
cart
end
end
下单后销毁:
def destroy
@cart = current_cart
@cart.destroy
session[:cart_id] = nil
respond_to do |format|
format.html { redirect_to session[:prev_url],
:notice => I18n.t(:empty_card) }
format.json { head :ok }
end
end
但是我怎样才能告诉 RoR 让这个会话保持活跃呢?
【问题讨论】:
-
您需要保留会话 cookie,但这通常不是一个好主意。请改用基于 cookie 的技术。
-
@semir.babajic 如果我将 session[:cart_id] = cart.id 更改为 cookies[:cart_id] = cart.id,我会像以前一样拥有大部分功能吗?那我怎样才能恢复我的购物车呢?
-
在您的数据库中保留一份购物车副本,并参考用户。
标签: ruby-on-rails ruby session cookies