impress/app/controllers/pets_controller.rb

56 lines
1.4 KiB
Ruby
Raw Normal View History

2010-10-10 19:18:42 -07:00
class PetsController < ApplicationController
2010-11-05 15:45:05 -07:00
rescue_from Pet::PetNotFound, :with => :pet_not_found
cache_sweeper :user_sweeper
2010-11-05 15:45:05 -07:00
DESTINATIONS = {
'needed_items' => '?',
'root' => '#',
'wardrobe' => '#'
}
def load
2011-01-27 13:35:46 -08:00
if params[:name] == '!'
redirect_to roulette_path
2010-11-06 16:07:15 -07:00
else
2011-01-27 13:35:46 -08:00
raise Pet::PetNotFound unless params[:name]
@pet = Pet.load(params[:name])
if user_signed_in?
points = current_user.contribute! @pet
else
@pet.save
points = true
2010-11-05 17:09:03 -07:00
end
2011-01-27 13:35:46 -08:00
respond_to do |format|
format.html do
destination = params[:destination] || params[:origin]
destination = 'root' unless DESTINATIONS[destination]
query_joiner = DESTINATIONS[destination]
path = send("#{destination}_path") + query_joiner + @pet.wardrobe_query
redirect_to path
end
format.json do
render :json => points
end
2010-11-05 17:09:03 -07:00
end
end
2010-11-05 15:45:05 -07:00
end
protected
def pet_not_found
2010-11-05 17:09:03 -07:00
respond_to do |format|
format.html do
path = params[:origin] || root_path
path += "?name=#{params[:name]}"
redirect_to path, :alert => 'Could not find any pet by that name. Did you spell it correctly?'
end
format.json do
render :text => 'Pet not found', :status => :not_found
end
end
end
end