Forms And Basic Associations Rails Lab

Objectives

  1. Practice defining associations
  2. Practice building forms in ERB when working with nested models

A Song Library

In this lab, we're going to make a song library that helps record thoughts about various Songs. Our data model looks like this:

  • Artist
    • has a name attribute (String)
    • has many Songs
  • Song
    • has a title attribute (String)
    • belongs to an Artist
    • belongs to a Genre
    • has many Notes
  • Genre
    • has a name attribute (String)
    • has many songs
  • Note
    • has content attribute (String)
    • belongs to a Song

Instructions

  1. The base models, controllers, and seed data have been provided for you.
  2. You should create and migrate the database before starting to develop your solution.
  3. Seeding the database provides many Genres. You will add data about Artists, Notes, and Songs during the development of this application. The ArtistsController and SongsController have been built out so that you can do this.

First, connect the models by using the ActiveRecord association commands.

Next, update the minimal app/views/songs/new.html.erb.

This view should have a form that provides:

  • A text input box that sets the Song's title.
  • A text input box for the Artist.
  • A selection box for Genre. Users should be able to pick amongst existing genres only.
  • Several text input boxes to add notes to the song. These should have the IDs song_notes_1, song_notes_2, and so on for the specs to pass.

This is a challenging lab. Here are some hints:

  • You might need to search around for how to pass an array using strong_params!
  • It's easy to get confused between getting an Artist instance from a Song and an Artist's name. To help make your form work easier, solve the spec/models/song_spec.rb first. You can run a single spec by invoking it with e.g. rspec spec/models/song_spec.rb
  • Make use of the references below!
  • While we direct you to update new.html.erb, you're going to need to make changes in multiple models and the SongsController.

References

View Forms And Basic Associations Rails Lab on Learn.co and start learning to code for free.