| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667 |
- require './lib/pkparse/client'
- class PokemonController < ApplicationController
- def index
- @pokemon = Pokemon.all
- end
- def show
- @pokemon = Pokemon.find(params[:id])
- end
- def new
- @pokemon = Pokemon.new
- end
- def create
- @pokemon = Pokemon.new(new_pokemon_params)
- if @pokemon.save
- redirect_to pokemon_path(@pokemon)
- else
- render :new
- end
- end
- def destroy
- pokemon = Pokemon.find(params[:id])
- if pokemon.destroy
- flash.now[:notice] = "Pokemon successfuly deleted."
- redirect_to pokemon_index_path
- else
- flash.now[:alert] = "Failed to delete pokemon."
- render :show
- end
- end
- def upload
- files = params[:pokemon]
- response = PKParse::Client.new(files).parse
- saved = false
- Pokemon.transaction do
- saved = Pokemon.create!(response.pokemon.map(&:to_h))
- end
- if saved
- redirect_to pokemon_index_path
- else
- flash.now[:alert] = "Failed to commit the uploaded pokemon."
- @pokemon = Pokemon.new
- render :new
- end
- rescue PKParse::Error => e
- flash.now[:alert] = e.message
- @pokemon = Pokemon.new
- render :new
- end
- private
- def new_pokemon_params
- params.require(:pokemon).permit(
- :id, :pokedex_number, :nickname
- )
- end
- end
|