我该怎么办时,该用户之后添加的东西到购物车,离开后重新打开浏览器(关闭)轨恢复它的会话,用户可以购买更多... 现在我有这样的关闭浏览器后保持会话生效。
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,但这通常不是一个好主意。改为使用基于cookies的技术。 –
@ semir.babajic我会像以前一样拥有大部分功能,如果我将会话[:cart_id] = cart.id更改为cookie [:cart_id] = cart.id?那我怎么能恢复我的购物车? – brabertaser19
在您的数据库中保存购物车的副本并提供给用户。 – MiniRagnarok