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