読者です 読者をやめる 読者になる 読者になる

牌語備忘録 -pygo

あくまでもメモです。なるべくオフィシャルの情報を参照してください。

牌語備忘録 -pygo

レイルに乗ってみた〜Rails of Ruby on Rails その13「ショッピングカートで微妙に躓いた(つдT)」

Rails

レイルに乗ってみた〜 目次
書籍『Rails of Ruby on Rails ~Case of LOCUSANDWONDERS.COM~』で勉強してみた(P144〜)

Cartモデルの作成

G5:~/work/locus username$ script/generate model cart
      exists  app/models/
      exists  test/unit/
      exists  test/fixtures/
      create  app/models/cart.rb
      create  test/unit/cart_test.rb
      create  test/fixtures/carts.yml
      exists  db/migrate
      create  db/migrate/20080919043828_create_carts.rb
Loaded suite script/generate
Started

Finished in 0.001031 seconds.

0 tests, 0 assertions, 0 failures, 0 errors

マイグレーション

G5:~/work/locus username$ rake db:migrate
(in /Users/username/work/locus)
== 20080919043828 CreateCarts: migrating ======================================
-- create_table(:carts)
   -> 0.0187s
== 20080919043828 CreateCarts: migrated (0.0202s) =============================

Loaded suite /opt/local/bin/rake
Started

Finished in 0.000887 seconds.

0 tests, 0 assertions, 0 failures, 0 errors

モデル修正

ファイルを変更。
/work/locus/app/models/cart.rb
書籍の通りなので略。

CartItemモデルの作成

G5:~/work/locus username$ script/generate model CartItem unit_price:integer quantity:integer cart:references product:references
      exists  app/models/
      exists  test/unit/
      exists  test/fixtures/
      create  app/models/cart_item.rb
      create  test/unit/cart_item_test.rb
      create  test/fixtures/cart_items.yml
      exists  db/migrate
      create  db/migrate/20080919044748_create_cart_items.rb
Loaded suite script/generate
Started

Finished in 0.000707 seconds.

0 tests, 0 assertions, 0 failures, 0 errors

マイグレーションファイル修正

ファイルを変更。
/work/locus/db/migrate/20080919044748_create_cart_items.rb
書籍の通りなので略。
繰り返しになるけど、なんで書籍みたいに「010_create_cart_items.rb」でなく「作成日_create_cart_items.rb」になるのかなぁ?

マイグレーション実行

G5:~/work/locus username$ rake db:migrate
(in /Users/username/work/locus)
== 20080919044748 CreateCartItems: migrating ==================================
-- create_table(:cart_items)
   -> 0.0280s
== 20080919044748 CreateCartItems: migrated (0.0291s) =========================

Loaded suite /opt/local/bin/rake
Started

Finished in 0.001121 seconds.

0 tests, 0 assertions, 0 failures, 0 errors

モデル修正

ファイル変更。
/work/locus/app/models/cart_item.rb
/work/locus/app/models/product.rb
書籍の通りなので略。

Cartコントローラの作成

G5:~/work/locus username$ script/generate controller cart index      exists  app/controllers/
      exists  app/helpers/
      create  app/views/cart
      exists  test/functional/
      create  app/controllers/cart_controller.rb
      create  test/functional/cart_controller_test.rb
      create  app/helpers/cart_helper.rb
      create  app/views/cart/index.html.erb
Loaded suite script/generate
Started

Finished in 0.281281 seconds.

0 tests, 0 assertions, 0 failures, 0 errors

上記でできた
/work/locus/app/controllers/cart_controller.rb
に記述。.
書籍の通りなので略。

カート画面の作成 レイアウトを追加

ファイルを新規作成。
/work/locus/app/views/layouts/cart.html.erb
書籍の通りなので略。

カート画面を作成

/work/locus/app/views/cart/index.html.erb
書籍の通りなので略。

カートもライトボックス風に表示

以下のファイルを変更。
/work/locus/app/views/layouts/products.html.erb
/work/locus/app/views/layouts/entries.html.erb
書籍の通りなので略。
しかし、次のファイル
/work/locus/app/views/products/show.html.erb
書籍では「controller => 'cart', 」の行以下を変更の表示だけど、実際は

      <%= link_to 'カートに入れる', '#' %>>

      <%= link_to('カートに入れる', 
          {:controller => 'cart', 
           :action     => 'add_to_cart', 
           :id         => @product,
           :TB_iframe  => true,
           :width      => 760,
           :height     => 540},
          {:class      => 'thickbox',
           :title      => 'Cart'}) %>

となり「'カートに入れる',」の前に「(」はいる。

ブラウザで確認

http://localhost:3000/
商品をクリックして詳細から「カートに入れる」をクリック。

メモ

  • 書籍の通りにやってるとぉ、やっぱり書籍の記述が微妙に違う気がするぅ。あると思います。