Skip to content

Instantly share code, notes, and snippets.

@SanjeQi
Created November 27, 2018 10:57
Show Gist options
  • Save SanjeQi/2847744bf9cfb8ebff1b3946f50c86c6 to your computer and use it in GitHub Desktop.
Save SanjeQi/2847744bf9cfb8ebff1b3946f50c86c6 to your computer and use it in GitHub Desktop.
class SongsController < ApplicationController
before_action :set_song, only: [:show, :edit, :update, :destroy]
def index
@songs = Song.all
end
def new
@song = Song.new
end
def create
@song = Song.new(song_params)
if @song.valid?
@song.save
redirect_to song_path(@song)
else
render :new
end
end
def edit
end
def show
end
def update
if @song.update(song_params)
@song.save
redirect_to song_path(@song)
else
render :edit
end
end
def destroy
@song.destroy
redirect_to songs_path
end
private
def song_params
params.require(:song).permit(:title, :released, :release_year, :artist_name, :genre)
end
def set_song
@song = Song.find(params[:id])
end
end
---------------------------------------------------
#index
<h1>Song Index</h1>
<table>
<tbody>
<%= @songs.each do |song| %>
<tr><td><%= song.title %></td></tr>
<% end %>
</tbody>
</table>
---------------------------------------------------
#new
<%= form_for (@song) do |f| %>
<%= f.text_field :title %>
<%= f.number_field :release_year %>
<%= f.check_box :released %>
<%= f.text_field :genre %>
<%= f.text_field :artist_name %>
<%= f.submit %>
<% end %>
----------------------------------------
#show
<h1>Show Song</h1>
<h1><%= @song.title %></h2>
<h2><%= @song.released %></h2>
<h2><%= @song.release_year %></h2>
<h2><%= @song.artist_name %></h2>
<h2><%= @song.genre %></h2>
------------------------------------------
#edit
<%= form_for @song do |f| %>
<%= f.text_field :title %>
<%= f.number_field :release_year %>
<%= f.check_box :released %>
<%= f.text_field :genre %>
<%= f.text_field :artist_name %>
<%= f.submit %>
<% end %>
-------------------------------------
#Song
class Song < ActiveRecord::Base
validates :title, presence: true
validates :title, uniqueness: {scope: :release_year}
validates :artist_name, presence: true
validates :release_year, numericality: { less_than_or_equal_to: 2018}, if: :released
validates :release_year, presence: true, if: :released
end
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment