[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

 

 

posted @ 2014-09-15 03:59  Zhentiw  阅读(838)  评论(0)    收藏  举报