レイルに乗ってみた〜 目次
書籍『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
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/
商品をクリックして詳細から「カートに入れる」をクリック。
メモ
- 書籍の通りにやってるとぉ、やっぱり書籍の記述が微妙に違う気がするぅ。あると思います。