Rails アジャイル本 第10章 タスクE:チェックアウト!

Rails アジャイル本の第10章の自由課題。

save_order, add_line_items_from_cart, from_cart_item メソッドのフロー

  1. save_order でカートの内容を @cart インスタンスに保存
  2. フォーム送信された値から @order インスタンスを作成
  3. @order インスタンスのメソッド add_line_items_from_cart によりカートの中身のそれぞれ対応する品目を line_items に追加していく。
    品目は from_cart_item メソッドで、カートの中身から対応するものを作成する。

チェックアウトボタンを無効化する

最初、checkout メソッド内で @checked フラグを作って button_to ヘルパーの :disabled オプション に渡していたが、@order インスタンスが作られているかどうかによる方法でよかった。

<%= button_to "Checkout", { :action => "checkout" }, { :disabled => !@order.nil? } %>

支払い方法リストのデータベーステーブルへの移動

The Pragmatic Bookshelf | Pt-E-3 の scaffold を使った例を試してみた。

  1. scaffoldpay_type テーブルを作る
  2. order テーブルの既存の pay_type フィールドを削除して、新たに pay_type_id フィールドを作る
  3. 各モデル間の関連付けを行う
  4. pay_type のバリデーションを修正する
  5. app/views/store/checkout.html.erb テンプレートの pay_type フィールドを pay_type データベースからのデータで作成する

pay_type と order の関連

RailsによるアジャイルWebアプリケーション開発
Sam Ruby David Heinemeier Hansson Dave Thomas
オーム社
売り上げランキング: 29946
«
»