0
後,基本上我一直在關注的RailsCasts寶基礎教程和車被標記爲購買後,你需要重新設置會話[:cart_id] =零復位車mark_cart_as_purchased
這裏是我的代碼
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
我似乎無法弄清楚爲什麼它不工作。我很感激任何關於我出錯的地方。謝謝
更新:我想'如果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
末
仍然沒有運氣!不知道我現在做,有什麼錯....
我實際上做了Cart.create的railscasts插曲!但是,當我遵循這一點時,它會弄亂購物車的視野。拋出這個錯誤>> [link](https://www.dropbox.com/s/8snff4essml1gug/error.png?dl=0) –
'create'和'create!'唯一的區別在於第一次返回如果對象沒有保存到數據庫,則爲false,而在這種情況下,第二個實際引發異常。看看你的錯誤,'create!'應該在到達之前產生一個異常,所以看起來'@ cart'在'create!'和進入視圖之間被設置爲零。你是否在用「byebug」來調試?如果您一步一步調試,您會發現問題。 – aruanoc
所以我改變了代碼本> 高清顯示 (AT)車=如果CURRENT_USER \t current_user.cart || = Cart.find_by(會話[:cart_id]) \t會話[:cart_id] =零,如果CURRENT_USER。 cart.purchased_at end if session [:cart_id] .nil? ! \t current_user.cart = Cart.create(USER_ID:PARAMS [:編號]) \t會話[:cart_id] = current_user.cart.id 結束 (AT)車= current_user.cart 結束 |它的工作原理,但是當cart.purchased_at是真正的車不復位... –