[Rails] Controller -- Ex
SHOW ACTION
app/controllers/zombies_controller.rb
Create the show
action for the ZombiesController which finds a Zombie
based onparams[:id]
. Store the Zombie
object to an instance variable named @zombie
.
<h1><%= @zombie.name %></h1>
Answer:
class ZombiesController < ApplicationController def show # put the show code here @zombie = Zombie.find(params[:id]) end end
RESPOND TO
Finish the respond_to
block so the action returns the XML
of the @zombie
record
class ZombiesController < ApplicationController def show @zombie = Zombie.find(params[:id]) respond_to do |format| format.html format.xml{render xml: @zombie} end end end
CONTROLLER CREATE ACTION
Write a create
action that will create a new Zombie
from the params and then redirect to the created Zombie
's show page. Make sure to use Rails 4 strong_parameters.
# params = {zombie: {name: 'Gregg', graveyard: 'TBA'}}
Answer:
class ZombiesController < ApplicationController def create @zombie = Zombie.create(zombie_params) redirect_to zombie_path(@zombie) end private def zombie_params params.required(:zombie).permit(:name, :graveyard) end end
CONTROLLER BEFORE ACTION
Add a before_action
that calls a method to check if a Zombie
has tweets. Redirect tozombies_path
if the zombie doesn't have tweets, only on show.
class ZombiesController < ApplicationController before_action :find_zombie before_action :check_tweets, only: :show def check_tweets if @zombie.tweets.size == 0 redirect_to zombies_path end end def show render action: :show end def find_zombie @zombie = Zombie.find params[:id] end end