Changeset 1095
- Timestamp:
- 10/02/08 16:12:33 (18 months ago)
- Location:
- rails_book/depot
- Files:
-
- 9 added
- 5 modified
-
app/controllers/store_controller.rb (modified) (1 diff)
-
app/helpers/store_helper.rb (modified) (1 diff)
-
app/models/line_item.rb (added)
-
app/models/order.rb (added)
-
app/models/product.rb (modified) (1 diff)
-
app/views/store/_cart.html.erb (modified) (1 diff)
-
app/views/store/checkout.html.erb (added)
-
db/migrate/20081002051332_create_orders.rb (added)
-
db/migrate/20081002051852_create_line_items.rb (added)
-
db/schema.rb (modified) (1 diff)
-
test/fixtures/line_items.yml (added)
-
test/fixtures/orders.yml (added)
-
test/unit/line_item_test.rb (added)
-
test/unit/order_test.rb (added)
Legend:
- Unmodified
- Added
- Removed
-
rails_book/depot/app/controllers/store_controller.rb
r1094 r1095 28 28 end 29 29 30 def checkout 31 @cart = find_cart 32 if @cart.total_items.zero? 33 redirect_to_index('Your cart is empty') 34 else 35 @order = Order.new 36 end 37 end 38 39 def save_order 40 @cart = find_cart 41 @order = Order.new(params[:order]) 42 @order.add_line_items_from_cart(@cart) 43 if @order.save 44 session[:cart] = nil 45 redirect_to_index('Thank you for your order') 46 else 47 render :action => :checkout 48 end 49 end 50 30 51 private 31 32 52 def find_cart 33 53 session[:cart] ||= Cart.new -
rails_book/depot/app/helpers/store_helper.rb
r1094 r1095 4 4 content_tag(tag, attrs, *args, &block) 5 5 end 6 7 def labeled(attr, name, form, type, *etc) 8 locals = { 9 :form_elem => form.send(type, attr, *etc), 10 :label_for => "order_" + attr.to_s, 11 :name => name 12 } 13 render :inline => <<-TEMPLATE, :locals => locals 14 <p> 15 <label for="<%= label_for %>"> 16 <%= name %>: 17 </label> 18 <%= form_elem %> 19 </p> 20 TEMPLATE 21 end 6 22 end -
rails_book/depot/app/models/product.rb
r1083 r1095 1 1 class Product < ActiveRecord::Base 2 has_many :line_items 3 2 4 validates_presence_of :title, :description, :image_url 3 5 validates_numericality_of :price -
rails_book/depot/app/views/store/_cart.html.erb
r1094 r1095 9 9 10 10 </table> 11 11 12 <%= button_to 'Checkout', :action => :checkout %> 13 12 14 <% form_remote_tag :url => { :action => :empty_cart } do %> 13 15 <%= submit_tag "Empty cart" %> -
rails_book/depot/db/schema.rb
r1085 r1095 10 10 # It's strongly recommended to check this file into your version control system. 11 11 12 ActiveRecord::Schema.define(:version => 20081001022624) do 12 ActiveRecord::Schema.define(:version => 20081002051852) do 13 14 create_table "line_items", :force => true do |t| 15 t.integer "quantity", :null => false 16 t.integer "total_price", :limit => 10, :precision => 10, :scale => 0, :null => false 17 t.integer "product_id" 18 t.integer "order_id" 19 t.datetime "created_at" 20 t.datetime "updated_at" 21 end 22 23 create_table "orders", :force => true do |t| 24 t.string "name" 25 t.text "address" 26 t.string "email" 27 t.string "pay_type", :limit => 10 28 t.datetime "created_at" 29 t.datetime "updated_at" 30 end 13 31 14 32 create_table "products", :force => true do |t|
