Emi Matchu
7eb209e206
Previously, "Then: Go to unlabeled appearance" would always take you to the *first* unlabeled appearance in our database. Now, we go to the *next* unlabeled appearance in the list, relative to this one.
56 lines
1.2 KiB
Ruby
56 lines
1.2 KiB
Ruby
class PetStatesController < ApplicationController
|
|
before_action :support_staff_only
|
|
before_action :find_pet_state
|
|
before_action :preload_assets
|
|
|
|
def edit
|
|
end
|
|
|
|
def update
|
|
if @pet_state.update(pet_state_params)
|
|
flash[:notice] = "Pet appearance \##{@pet_state.id} successfully saved!"
|
|
redirect_to destination_after_save
|
|
else
|
|
render action: :edit, status: :bad_request
|
|
end
|
|
end
|
|
|
|
protected
|
|
|
|
def find_pet_state
|
|
@pet_type = PetType.find_by_param!(params[:pet_type_name])
|
|
@pet_state = @pet_type.pet_states.find(params[:id])
|
|
@reference_pet_type = @pet_type.reference
|
|
end
|
|
|
|
def preload_assets
|
|
SwfAsset.preload_manifests @pet_state.swf_assets
|
|
end
|
|
|
|
def pet_state_params
|
|
params.require(:pet_state).permit(:pose, :glitched)
|
|
end
|
|
|
|
def destination_after_save
|
|
if params[:next] == "unlabeled-appearance"
|
|
next_unlabeled_appearance_path
|
|
else
|
|
@pet_type
|
|
end
|
|
end
|
|
|
|
def next_unlabeled_appearance_path
|
|
unlabeled_appearance =
|
|
PetState.next_unlabeled_appearance(after_id: params[:after])
|
|
|
|
if unlabeled_appearance
|
|
edit_pet_type_pet_state_path(
|
|
unlabeled_appearance.pet_type,
|
|
unlabeled_appearance,
|
|
next: "unlabeled-appearance"
|
|
)
|
|
else
|
|
@pet_type
|
|
end
|
|
end
|
|
end
|