我怎么办,用户在购物车中添加东西后,在重新开启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让这个会话保持活力?
答案 0 :(得分:2)
只需将cart_id
存储到Cookie而不是会话中,您就可以实现自己想要的效果。当您需要提取购物车信息时,请使用Cookie中的ID。
class ApplicationController < ActionController::Base
protect_from_forgery
before_filter :current_cart
private
def current_cart
Cart.find(cookies[:cart_id])
@cart = Cart.find(cookies[:cart_id])
rescue ActiveRecord::RecordNotFound
cart = Cart.create
cookies[:cart_id] = cart.id
cart
end
end
希望它有所帮助。