summaryrefslogtreecommitdiff
path: root/app/controllers/pokedex_entries_controller.rb
diff options
context:
space:
mode:
authorDavid Gay <david@davidgay.org>2023-11-03 01:03:48 -0400
committerDavid Gay <david@davidgay.org>2023-11-03 01:03:48 -0400
commit0c5cccbecfc8b71fb318c275f142306e19bb7e43 (patch)
tree178b401fe2ecf6bd965524e078e9882305342a69 /app/controllers/pokedex_entries_controller.rb
parent47ecf3f515ef5bd7db2c4f3bce0a872a46ca2233 (diff)
Pokedex entry recording and viewing on runs#show
Diffstat (limited to 'app/controllers/pokedex_entries_controller.rb')
-rw-r--r--app/controllers/pokedex_entries_controller.rb36
1 files changed, 36 insertions, 0 deletions
diff --git a/app/controllers/pokedex_entries_controller.rb b/app/controllers/pokedex_entries_controller.rb
new file mode 100644
index 0000000..952f0cc
--- /dev/null
+++ b/app/controllers/pokedex_entries_controller.rb
@@ -0,0 +1,36 @@
+class PokedexEntriesController < ApplicationController
+ before_action :set_run
+ before_action :only_allow_if_checked_out, only: [:create]
+
+ def index
+ @pokedex_entries = PokedexEntry.where(run: @run).order(:created_at).reverse
+ end
+
+ def new
+ @pokedex_entry = PokedexEntry.new
+ end
+
+ def create
+ @pokedex_entry = current_user.pokedex_entries.build(pokedex_entry_params)
+ @pokedex_entry.run_id = params[:run_id]
+ if @pokedex_entry.save
+ redirect_to run_pokedex_entries_path(@run)
+ else
+ render :new, status: :unprocessable_entity
+ end
+ end
+
+protected
+
+ def pokedex_entry_params
+ params.require(:pokedex_entry).permit(:pokemon_id, :recorded_at, :shiny)
+ end
+
+ def set_run
+ @run = Run.find(params[:run_id])
+ end
+
+ def only_allow_if_checked_out
+ redirect_to run_path(@run) unless @run.checked_out_user == current_user
+ end
+end