def need_a_ride(event_id=None, ride_request_id=None):
    # pdb.set_trace()
    try:
        event = Event(_id=ObjectId(event_id), db=db)
        manager = EventManager(event=event, db=db)
        # reservation = Reservation(event=event, db=db)
        # reservation = manager.reservation_map[event_id]
        if ride_request_id is None:
            name = request.form['name']
            email = request.form['email']
            num_seats = int(request.form['num_seats'])

            # create a request
            requester = Person(name=name, email=email, db=db)
            rideshare_request = RideshareRequest(requester=requester,
                                                 number_seats=num_seats,
                                                 event=event,
                                                 db=db)
            # request_id = reservation.register_rideshare_request(rideshare_request)
            # serialize_manager()
            return redirect('/event/{}/request_ride/{}'.format(
                event_id, str(rideshare_request._id)))

        else:
            # rideshare_request = reservation.rideshare_requests[ride_request_id]
            rideshare_request = RideshareRequest(_id=ObjectId(ride_request_id),
                                                 db=db)

            match = None
            for rideshare in manager.get_rideshares():
                if rideshare_request.requester in rideshare.riders:
                    match = rideshare.ride_sharer
                    break

            html = ''
            if match is not None:
                html += "You've been matched with {}".format(match.name)

            else:

                open_rideshares = manager.get_open_rideshares(
                    rideshare_request.number_seats)

                if len(open_rideshares) == 0:
                    html = 'Sorry, there are no available rideshares at this time. '
                    html += 'Check back soon to see when rides become available'
                else:
                    html = 'There {} {} ride{} available'.format(
                        'are' if len(open_rideshares) != 1 else 'is',
                        len(open_rideshares),
                        's' if len(open_rideshares) != 1 else '')
                    html += '<br><br>'
                    html += 'Select any rides you would be happy taking'
                    html += '<form action="requested" method="post">'
                    for rideshare in open_rideshares:
                        ride_sharer = rideshare.ride_sharer
                        html += '<input type="checkbox" '
                        html += 'name="id" value="{}" '.format(
                            str(rideshare._id))
                        html += '/>'
                        html += ' {} ({} seat{})'.format(
                            ride_sharer.name, rideshare.seats_available(),
                            's' if rideshare.seats_available() != 1 else '')
                        html += ' <br>'
                    html += '<input type="submit" value="Submit">'
                    html += '</form>'

            return html
    except Exception as e:
        print('>>> error!')
        import traceback
        print(traceback.format_exc())
        #print(manager.reservation_map)
        raise e