diff --git a/app/controllers/bikes_controller.rb b/app/controllers/bikes_controller.rb index 8886ea7..b8ca28a 100644 --- a/app/controllers/bikes_controller.rb +++ b/app/controllers/bikes_controller.rb @@ -4,10 +4,7 @@ class BikesController < ApplicationController def index @bikes = Bike.all.order(:log_number).reverse_order.paginate(:page => params[:page], :per_page => 30) - @unsold_bikes = @bikes.select{ |bike| - !bike.date_sold && - (bike.purpose == "Sale") - } + @unsold_bikes = @bikes.select{|bike| bike.date_sold.nil? && bike.purpose == "Sale"} end def show; end @@ -31,7 +28,7 @@ class BikesController < ApplicationController def create @bike = Bike.new(bike_params) if @bike.save - redirect_to @bike, notice: 'Bike was successfully created.' + redirect_to new_bike_path, notice: 'Bike was successfully created.' else render action: 'new' end diff --git a/app/views/bikes/_form.html.haml b/app/views/bikes/_form.html.haml index c217393..a2f9679 100644 --- a/app/views/bikes/_form.html.haml +++ b/app/views/bikes/_form.html.haml @@ -1,12 +1,12 @@ = form_for @bike, html: {class: 'form-horizontal'} do |f| - - if @bike.errors.any? + - if @bike.errors.any? #error_explanation %h2= pluralize(@bike.errors.count, "error") + " prohibited this bike from being saved:" %ul - @bike.errors.full_messages.each do |msg| - %li= msg - = render 'fields', f: f + %li= msg + = render 'fields', f: f .row .actions.col-sm-offset-2 - = f.submit class: "btn btn-default" + = f.submit value: "Log another bike", class: "btn btn-default" diff --git a/db/schema.rb b/db/schema.rb index b92e8aa..a248f37 100644 --- a/db/schema.rb +++ b/db/schema.rb @@ -16,7 +16,7 @@ ActiveRecord::Schema.define(version: 20150918221119) do # These are extensions that must be enabled in order to support this database enable_extension "plpgsql" - create_table "agencies", force: true do |t| + create_table "agencies", force: :cascade do |t| t.string "agency_name" t.string "contact_name" t.string "street_address" @@ -27,7 +27,7 @@ ActiveRecord::Schema.define(version: 20150918221119) do t.string "email" end - create_table "bikes", force: true do |t| + create_table "bikes", force: :cascade do |t| t.string "entry_date" t.string "brand" t.string "model" @@ -49,7 +49,7 @@ ActiveRecord::Schema.define(version: 20150918221119) do t.integer "bike_index_id" end - create_table "clients", force: true do |t| + create_table "clients", force: :cascade do |t| t.string "first_name" t.string "last_name" t.date "application_date" @@ -75,7 +75,7 @@ ActiveRecord::Schema.define(version: 20150918221119) do add_index "clients", ["agency_id"], name: "index_clients_on_agency_id", using: :btree add_index "clients", ["bike_id"], name: "index_clients_on_bike_id", using: :btree - create_table "users", force: true do |t| + create_table "users", force: :cascade do |t| t.string "email", default: "", null: false t.string "encrypted_password", default: "", null: false t.string "reset_password_token" @@ -93,7 +93,7 @@ ActiveRecord::Schema.define(version: 20150918221119) do add_index "users", ["email"], name: "index_users_on_email", unique: true, using: :btree add_index "users", ["reset_password_token"], name: "index_users_on_reset_password_token", unique: true, using: :btree - create_table "volunteers", force: true do |t| + create_table "volunteers", force: :cascade do |t| t.string "name" t.string "email" t.string "phone" diff --git a/notes.txt b/notes.txt index 856639a..29a7c04 100644 --- a/notes.txt +++ b/notes.txt @@ -1,9 +1,8 @@ -Integrate with autocomplete to get manufacturers & models +integrate with autocomplete to get manufacturers & models +enable posting to bike index when a bike is created Freecyclery Receipts -enable posting to bike index when a bike is created - Reports General Reports bikes donated per year @@ -17,16 +16,13 @@ style client receipts assign a bike from the available freecyclery bikes page -validations around parameters that break site if incomplete mark as sold should be disabled after bike is sold there should be nice feedback indicating that the bike was sold Improve form layouts make navigation always on the left side of the page Make customer facing bike index with pitchers -make skizzers marks on the labels page -Improve great dummy data + refactor index - move unsold bikes to model -add a request-a-feature feature add pics of bikes for sale add recyclery logos & bike memorabilia pics all over app diff --git a/spec/controllers/bikes_controller_spec.rb b/spec/controllers/bikes_controller_spec.rb index d393cf9..9db0369 100644 --- a/spec/controllers/bikes_controller_spec.rb +++ b/spec/controllers/bikes_controller_spec.rb @@ -9,12 +9,23 @@ describe BikesController do sign_in user end + describe "GET #index" do + it "assignes unsold bikes" do + bike = FactoryGirl.create(:bike, date_sold: nil, purpose: "Sale") + get :index + expect(assigns(:unsold_bikes)).to eq([bike]) + end + end + describe "POST #create" do it "creates a new bike with valid credentials" do expect{ post :create, bike: FactoryGirl.attributes_for(:bike) }.to change(Bike, :count).by(1) end + it "redirects to new bike path" do + expect(post :create, bike: FactoryGirl.attributes_for(:bike)).to redirect_to(new_bike_path) + end end describe "GET #new" do @@ -25,4 +36,5 @@ describe BikesController do end end + end