关闭浏览器后保持会话活动。

时间:2013-01-10 20:16:52

标签: ruby-on-rails ruby session cookies

我怎么办,用户在购物车中添加东西后,在重新开启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让这个会话保持活力?

1 个答案:

答案 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

希望它有所帮助。