Forms And Basic Associations Rails Lab
Objectives
Practice defining associations
Practice building forms in ERB when working with nested models
A Song
Library
Song
LibraryIn this lab, we're going to make a song library that helps record thoughts about various Song
s. Our data model looks like this:
Artist
has a
name
attribute (String
)has many
Song
s
Song
has a
title
attribute (String
)belongs to an
Artist
belongs to a
Genre
has many
Note
s
Genre
has a
name
attribute (String
)has many
songs
Note
has
content
attribute (String
)belongs to a
Song
Instructions
The base models, controllers, and seed data have been provided for you.
You should create and migrate the database before starting to develop your solution.
Seeding the database provides many
Genre
s. You will add data aboutArtist
s,Note
s, andSong
s during the development of this application. TheArtistsController
andSongsController
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.
This is a challenging lab because we want you to use Rails' powerful nested form builder view helpers. Here are some hints:
You might need to reference information on passing an
Array
usingstrong_params
It's easy to get confused between getting an
Artist
instance from aSong
and anArtist
's name. To help make your form work easier, solve thespec/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 theSongsController
.
References
Last updated