diff options
author | David Gay <david@davidgay.org> | 2023-11-03 01:03:48 -0400 |
---|---|---|
committer | David Gay <david@davidgay.org> | 2023-11-03 01:03:48 -0400 |
commit | 0c5cccbecfc8b71fb318c275f142306e19bb7e43 (patch) | |
tree | 178b401fe2ecf6bd965524e078e9882305342a69 /app/controllers/pokedex_entries_controller.rb | |
parent | 47ecf3f515ef5bd7db2c4f3bce0a872a46ca2233 (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.rb | 36 |
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 |