Changeset 1095

Show
Ignore:
Timestamp:
10/02/08 16:12:33 (18 months ago)
Author:
vasi
Message:

orders

Location:
rails_book/depot
Files:
9 added
5 modified

Legend:

Unmodified
Added
Removed
  • rails_book/depot/app/controllers/store_controller.rb

    r1094 r1095  
    2828  end 
    2929   
     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   
    3051private 
    31  
    3252  def find_cart 
    3353    session[:cart] ||= Cart.new 
  • rails_book/depot/app/helpers/store_helper.rb

    r1094 r1095  
    44    content_tag(tag, attrs, *args, &block) 
    55  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 
    622end 
  • rails_book/depot/app/models/product.rb

    r1083 r1095  
    11class Product < ActiveRecord::Base 
     2        has_many :line_items 
     3         
    24        validates_presence_of :title, :description, :image_url 
    35        validates_numericality_of :price 
  • rails_book/depot/app/views/store/_cart.html.erb

    r1094 r1095  
    99 
    1010</table> 
    11    
     11 
     12<%= button_to 'Checkout', :action => :checkout %> 
     13 
    1214<% form_remote_tag :url => { :action => :empty_cart } do %> 
    1315  <%= submit_tag "Empty cart" %> 
  • rails_book/depot/db/schema.rb

    r1085 r1095  
    1010# It's strongly recommended to check this file into your version control system. 
    1111 
    12 ActiveRecord::Schema.define(:version => 20081001022624) do 
     12ActiveRecord::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 
    1331 
    1432  create_table "products", :force => true do |t|