Giter VIP home page Giter VIP logo

refactoring-views-with-helpers-lab's Introduction

Refactoring Views With Helpers Lab

Objectives

  1. Review creating associated objects
  2. Write a helper to conditionally display different links
  3. Use the helper in multiple views

Song Library

In this lab, we're going to augment our song library. While, ideally, every song is associated with an artist, this won't always be the case in our application. We'll use helpers to display different links based on whether or not a song is associated with an artist.

When a user adds a song to the library, they might be in a hurry and not know the artist off the top of their head, leaving it blank.

When we display the song library to the user, we want to account for when no artist has been associated with any given song. Additionally, we want to prompt the user to add an artist (mostly because we don't want to contribute to the global iTunes library "Unknown Artist" epidemic).

Instructions

The base models, controllers, views and other files have been provided. There are tests for the lab in the spec directory. You can run tests with the rspec command.

  1. Write the code for #artist_name and #artist_name= so that an Artist can be retrieved from, and associated with, a Song instance
  2. Write a helper method #display_artist in the appropriate app/helpers file to be called on in our views. The method's return value should take into consideration whether an artist is already associated with a song:
  • If an artist is already associated with the song, return a link to the artist's show page
  • If an artist is not associated with the song (a.k.a. 'else'), return a link to the song's edit page, with a link text of "Add Artist"
  1. Use the helper to display the artist on the songs#show and songs#index pages
  2. Make sure all tests pass. Then, do this:

Dancing Daft Punk

refactoring-views-with-helpers-lab's People

Contributors

maxwellbenton avatar lizbur10 avatar dependabot[bot] avatar annjohn avatar danielseehausen avatar scottcreynolds avatar blake41 avatar brennenawana avatar bhollan avatar pletcher avatar jmburges avatar rrcobb avatar mjones1818 avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.