カート作り終盤
わからなかったこと
今日は順調に進めました。
明日やること
チェックアウト機能の追加
WebLogic研修
調べたことのまとめ
重複している商品の情報を一行にまとめて数量を増やすためには
app/models内のcart.rbのadd_product()メソッドに条件を追加
def add_product(product) @items << LineItem.for_product(product) @total_price += product.price end
↓
↓
def add_product(product) item = @items.find{|i| i.product_id == product.id } if item item.quantity += 1 else item = LineItem.for_product(product) @item << item end total_price += product.price end
@itemsから情報が順番に取り出されiに格納される。
引数で来たproduct.idと@itemsのproduct_idが一致すれば数量を
追加elseなら@itemsにすべて追加。
エラー処理
add_to_cartで無効な商品idを渡されたときの処理
Railsにはエラー処理と通知に役立つフラッシュ(Flash)と呼ばれる機能がある。
リクエストの過程でオブジェクトを格納できる。フラッシュに格納されたオブジェクト
はそのセッションが終わるまで使用可能となり、その後動的に削除される。
def add_to_cart product = Product.find(params[:id]) @cart = find_cart @cart.add_product(product) redirect_to(:action => 'display_cart') rescue logger.error("無効な商品 #{params[:id]}にアクセスしようとしました") flash[:notice]= '無効な商品です' redirect_to(:action => 'index') end
find()によって投げられた例外はrescue節によって捕捉される。
Railsのloggerを使用してエラーのログを記録し、メッセージをnoticeとして
フラッシュに格納しカタログページを表示するためのリダイレクトを行っている。
今日の一言
ライブドアのブログサービス「nowa」について。
今日、newsでnowaに新機能追加という記事を見つけた。
最近、ブログで日報を書くことになり初めて自分のブログを作ったので
少し気になった。
そもそもnowaとは
1.記事公開の相手を「フレンドにのみ公開」か「全体に公開」、もしくは自分だけ
の日記として利用するユーザーのための「非公開」と、以上3パターンから選ぶこ
とができる点2.書籍、音楽、DVDをはじめ、おもちゃやマタニティグッズなどを、レビューとして読
者に紹介することができる機能を提供している点3.Twitterのような要素を含んだ、一言コメントを共有しあうスペース「ナニシテル?」
がある点4.スパム対策としてポイント制度「ノアエン」。ポイントをためてnowa内でサービスを
利用する際消費するしくみがある点
などが特徴として挙げられるらしい。
つまり多彩な機能のブログ。
そして今回の新機能で
3の「ナニシテル?」にチャネル機能を追加した
具体的には友達でなくても特定のテーマ別に「ナニシテル?」を共有して、チャット感覚
でしゃべり合える機能らしい。
いろんなアイデアがつまっているなぁと感心しつつ、暇を見つけて登録してみようと
思った。