基本上我一直在关注RailsCasts Paypal Basic教程,在购物车标记为已购买后,您需要重置会话[:cart_id] = nil
这是我的代码
class Customer::CartsController < ApplicationController
def show
@cart = if current_user
current_user.cart
else
Cart.find session[:cart_id]
Cart.destroy session[:cart_id]
session[:cart_id] = nil if current_user.cart.purchased_at
end
if session[:cart_id].nil?
@cart = Cart.create(session[:cart_id])
end
@cart
end
end
我似乎无法弄清楚为什么它不起作用。我会很感激任何关于我出错的地方。谢谢
更新:我想当'if current_user'为真,这是大部分时间。 else块不会被渲染。 所以我把它更新为
class Customer::CartsController < ApplicationController
def show
@cart = if current_user
current_user.cart ||= Cart.find session[:cart_id]
session[:cart_id] = nil if current_user.cart.purchased_at
end
if session[:cart_id].nil?
current_user.cart = Cart.create(params[:id])
session[:cart_id] = current_user.cart.id
end
current_user.cart
end
端
仍然没有运气!不知道,我现在做错了什么......
答案 0 :(得分:0)
很难看到没有发布实际错误,但我在下面的行中看到了一个问题:
current_user.cart = Cart.create(params[:id])
函数create
将哈希作为参数,因此您需要调用它,如下所示:
current_user.cart = Cart.create(:user_id => params[:id])
**假设id参数是用户ID。