ライド・オン・Rails:誤植?:p69, リスト20
本の記載は
def remove_from_cart @cart = session[:cart] assoc = @cart.assoc(params[:id]) @cart.delete(assoc) redirect_to :action => 'cart' end
だけれども動かず。assocにnilが返る。「配列の配列」探索にassocを使っているが@cartの中にある配列は[Item,数量]。この構造、id値で引っ掛けられるんだろうか。なんとなく普通にループ組まないと動かない気がするので以下のように修正。
def remove_from_cart @cart = session[:cart] @cart.each do |assoc| item, count = assoc if item.id == params[:id].to_i @cart.delete(assoc) break end end redirect_to :action => 'cart' end
動作確認・・・動きました。ちょっと泥臭いな。うまい方法があるんだろうか。Ruby知らないからわからないのねん。