Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
3 changes: 3 additions & 0 deletions app/controllers/application_controller.rb
Original file line number Diff line number Diff line change
@@ -1,3 +1,6 @@
class ApplicationController < ActionController::Base

include SessionsHelper

protect_from_forgery with: :exception
end
22 changes: 20 additions & 2 deletions app/controllers/rides_controller.rb
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,7 @@ def new
end

def create
@ride = Ride.new(ride_params)
if @ride.save
respond_to do |format|
format.html { redirect_to ride_path(@ride) }
Expand All @@ -39,17 +40,34 @@ def edit
end

def update
if @ride.add_passenger(current_user)
respond_to do |format|
format.html { redirect_to ride_path(@ride) }
format.json { render json: @ride }
end
else
flash[:alert] = "Unable to join the ride because it is full"
respond_to do |format|
format.html { redirect_to ride_path(@ride) }
format.json { render json: @ride }
end
end
end

def destroy
end

private
def set_user
def set_ride
@ride = Ride.find(params[:id])
end

def ride_params
params.require(:ride).permit(:max_seats, :max_range, :start_point, :end_point, :start_time, :driver_id)
params.require(:ride).permit(:max_seats,
:max_range,
:start_point,
:end_point,
:start_time,
:driver_id)
end
end
13 changes: 13 additions & 0 deletions app/models/ride.rb
Original file line number Diff line number Diff line change
Expand Up @@ -2,4 +2,17 @@ class Ride < ApplicationRecord
belongs_to :driver, class_name: :User, dependent: :destroy
has_many :passenger_rides
has_many :passengers, through: :passenger_rides

def add_passenger(new_passenger)
if !self.is_full?
self.passengers << new_passenger
true
else
false
end
end

def is_full?
self.passengers.count == self.max_seats ? true : nil
end
end
12 changes: 11 additions & 1 deletion app/views/rides/show.html.haml
Original file line number Diff line number Diff line change
@@ -1,3 +1,13 @@
%h1 Your Ride

= @ride.end_point

= "Driver: #{@ride.driver.first_name}"
%br
= "Destination: #{@ride.end_point}"
%br
= "Seats avaialable: #{@ride.passengers.count}/#{@ride.max_seats}"
%br
= link_to(@ride, {}, {method: :put})
%br
- if flash[:alert]
= flash[:alert]