In this Capstone project for the Photo Tourist you will implement a Ruby on Rails web application that makes use of both a relational and NoSQL database for the backend and expose the data through services to the Internet using Web services and a responsive user interface operating in a browser from a desktop and mobile device. You will have a chance to revisit and apply what you have learned in our previous courses to build and deploy a fully functional web application to the cloud accessible to your co-workers, future employers, friends, and family.
In developing the Photo Tourist web application, you will get to work with different data types and data access scenarios (e.g., fielded data display and update, image upload/download, text search, access controlled information) to provide your users the ability to show off their photos and information from trips they have taken and to seek out photos and information from trips taken by others. Using the application you develop, your users will be able to
• Create an account
• Upload and download photos to the site and make them accessible to others
• Provide descriptions of trips and photos that others can read
• Organize photos by location and trip,
• Find photos based on location
• Find photos based on text searches of descriptions
• Locate the place where the photo was taken on a map

Рецензии

EA

Great Course Jim has really thought me more than enough to get my career started. All a student has to do is just study.

KT

May 04, 2017

Filled StarFilled StarFilled StarFilled StarFilled Star

Excellent course. Mr. Stafford is a very good teacher.

Из урока

SPA Development Setup

In this module, you will develop an AngularJS web application for the purposes of managing a resource hosted by a Rails server. As a part of that, you will learn the details of the Rails Asset Pipeline for hosting web applications, key features to address when moving from development to production, and different deployment options that you have within this course. You will complete an end-to-end AngularJS/Rails application to manage the resource on the Rails server you developed and deployed as a part of module one (1). This application will consist of AngularJS 1.x, UI-Router, and ngResource modules as well as a sample service, directive, controller, and web page to manage the resource. You will learn the details of the Rails Asset Pipeline as an option for deploying web assets like AngularJS web applications and what features it provides and how to conform to its conventions to get those features. Novice and intermediate developers are encouraged to use the Asset Pipeline approach in this module and throughout the course for simplicity and consistency with the examples in follow-on modules as this will be the development approach used by all follow-on modules. You will optionally learn how to leverage node package manager, bower, and gulp to establish an external development environment that parallels many of the capabilities provided by Asset Pipeline (e.g., minification to reduce bandwidth requirements and concatenation to reduce the number of separate server HTTP connections). You may leverage this environment to form a deployment to Github, like performed during courses four (4) and five (5) except with deployment considerations addressed. Although there is a functional gulpfile developed during the module, you are encouraged to treat this as an optional topic. Additionally, you can optionally learn how to use a hybrid of external development and Rails by using Rails as a web server and deploying your web application to the public directory and forming a single development tree and deployment artifact to Heroku. Like the pure external development approach, you are encouraged to treat this approach as an optional topic.

Преподаватели

Jim Stafford

Adjunct Professor, Graduate Computer Science

Текст видео

[MUSIC] In this lecture, we will discuss displaying a list of instances with ng-repeat. And more like a quick demo. We will also go through getting news instances using the query method on $resource within the controller. So one of the first things we're going to do is implement a list of foos. So what we would like to have are some in the database already, to start playing with. So let's put five in the database and get to work on our list. What we're going to do is at the bottom of the display, add a list, a list of foos. So if we take a look at the page, remember the debug I added, where it was printing out the page. There's a controller, a Fooscontroller on the page known by foosVM and it currently has a foo resource but no foos resource, plural. We'll be fixing that in a moment. So we're going to iterate over the foosVM.foos, and we're going to order it by name, the name property. And when someone wants to click on a particular foo, then what's going to happen is the controller will have a edit callback called, and it's going to pass foo into that callback. And then we'll be able to display foo's name as well in the list. So let's see if we can get these things side by side. So at this point in time, I've got my source code saved, but I'm not seeing a list. And of course, we know we're not that ready. But what I want to do is just point out that, That our unnumbered list does exist. It's doing a repeat, but it's not finding anything. So, that's why we have no list. It's not because our HTML page has anything wrong with it. So, what we want to do, is go over to the controller, and see if we can fix this. So in the controller we notionally said, yeah, we're going to have some foos. What we now need to do is actually get some foos. So during the activate, we should have called foo.query() on the resource. Query returns a collection of proxies, to begin with, that end up getting resolved in place, that we can display. So now if we refresh our page, with that in place, we have our five tests. One, two, three, four, five. Okay, we're able to list. In summary, well, we can use the query method on $resource in order to obtain instances from our backend API. What gets returned is a collection of proxies that will resolve over time. Or we can actually wait on a promise that's within the collection. I didn't show or talk about that within the example within this lecture, but we'll see uses of that later on in the course. We can display our collection with ng-repeat, and then we can optionally order the list with the orderBy clause. What's next? Well, let's start creating instances from our web application.