pokemon_controller.rb 1.3 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667
  1. require './lib/pkparse/client'
  2. class PokemonController < ApplicationController
  3. def index
  4. @pokemon = Pokemon.all
  5. end
  6. def show
  7. @pokemon = Pokemon.find(params[:id])
  8. end
  9. def new
  10. @pokemon = Pokemon.new
  11. end
  12. def create
  13. @pokemon = Pokemon.new(new_pokemon_params)
  14. if @pokemon.save
  15. redirect_to pokemon_path(@pokemon)
  16. else
  17. render :new
  18. end
  19. end
  20. def destroy
  21. pokemon = Pokemon.find(params[:id])
  22. if pokemon.destroy
  23. flash.now[:notice] = "Pokemon successfuly deleted."
  24. redirect_to pokemon_index_path
  25. else
  26. flash.now[:alert] = "Failed to delete pokemon."
  27. render :show
  28. end
  29. end
  30. def upload
  31. files = params[:pokemon]
  32. response = PKParse::Client.new(files).parse
  33. saved = false
  34. Pokemon.transaction do
  35. saved = Pokemon.create!(response.pokemon.map(&:to_h))
  36. end
  37. if saved
  38. redirect_to pokemon_index_path
  39. else
  40. flash.now[:alert] = "Failed to commit the uploaded pokemon."
  41. @pokemon = Pokemon.new
  42. render :new
  43. end
  44. rescue PKParse::Error => e
  45. flash.now[:alert] = e.message
  46. @pokemon = Pokemon.new
  47. render :new
  48. end
  49. private
  50. def new_pokemon_params
  51. params.require(:pokemon).permit(
  52. :id, :pokedex_number, :nickname
  53. )
  54. end
  55. end