Details Pages with EJS

Menu
Menu

Details Pages with EJS

Details Pages

So far we have a view that list all the films (with images). Next we'll make each of these listings link to a second page that will display specific information about that individual film. We will do that by re-visiting a concept we saw with the API example where a value is sent in the URL in the format localhost:3000/filmDetails/645268083f37a8fd938b26a1

Build the links

Edit src/views/films.ejs to include links to a route of film/:id.

SNIPPET: src/views/films.ejs

Note how the dynamic value of <%= film._id %> is used to create individual links for each film. We also make both the filmTitle and the images links to make the application more user friendly.

Adding the Controller

Add a controller for extracting data for one film:

SNIPPET: src/controllers/controller.ts

Ensure you add the getDataById method to the exported functions.

Create a route that receives the id as a URL parameter and then passes the id to the getDataById method in the controller.

SNIPPET: src/router/router.ts

The Response object res uses the render() method to call the filmDetails view and pass two values, title and film. These are then references in the EJS file:

SNIPPET: views/filmDetails.ejs

The hyperlinks in the films view should now link through to the details view.

Challenge: Add more information to the filmDetails view such as the film certification and release date. Can you also display the image?

Next: Latest Data on the Homepage