jappleba / sinatra-nested-forms-lab-superheros

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Sinatra Nested Forms Lab: Superheroes!

Overview

In this lab, you'll practice building nested forms in Sinatra for creating teams of superheros. No database is required, but feel free to add persistence after you have successfully completed the instructions below.

Instructions

Make a form

  1. Create a route that responds to a GET request at /.
  2. Create a view with a form and render it in the GET / route.
  3. The form should have fields for the name of a superhero team and their motto.
  4. There should be form inputs for each of the three superhero member's name, power, and bio.

It should look something like this:

Imgur

Handle form submission

  1. Create a route that responds to a POST request at /teams
  2. Have the form send a POST request to this route.
  3. Upon submission, render a template that displays the submitted team data and each member's data.

Final Output

Your params should be nested. For example, in order to see all the super heros for the team you just created you would enter:

params["team"]["members"]

If you wanted to access the first super-hero's name, you would enter:

params["team"]["members"][0]["name"]

When you post to this form you should render a page that displays the name of the team and each member of the team, along with their name, super power and bio.

Your view should display something like this:

Imgur

Deliverables

Pass the tests! You'll notice in super_sinatra_spec.rb in theit submits the form test for 'POST /teams', we use the Capybara method fill_in:

fill_in("member1_name", :with => "Amanda")
fill_in("member1_power", :with => "Ruby")
fill_in("member1_bio", :with => "I love Ruby!")

The same pattern follows for the second and third super heros. The word in quotes after fill_in needs to be set as an ID in the form to create the super heros:

<input id="member1_name" type="text" name="team[members][][name]" >

Resources

View this lesson on Learn.co

About

License:Other


Languages

Language:Ruby 70.6%Language:HTML 29.4%