class ProfilesController < ApplicationController before_action :set_profile, only: %i[ show edit update destroy ] # GET /profiles def index @profiles = Profile.page params[:page] end # GET /profiles/1 def show end # GET /profiles/new def new kind = params[:kind] kind = Profile.kinds.first unless Profile.kinds.include?(kind) @profile = Profile.new kind: kind end # GET /profiles/1/edit def edit authorize @profile end # POST /profiles def create @profile = Profile.new(profile_params) @profile.member = current_member if @profile.save redirect_to member_path(current_member), notice: "Successfully created #{@profile.Kind} profile" else render :new, status: :unprocessable_entity end end # PATCH/PUT /profiles/1 def update authorize @profile if @profile.update(profile_params) redirect_to member_path(current_member), notice: "#{@profile.Kind} profile was updated." else render :edit, status: :unprocessable_entity end end # DELETE /profiles/1 def destroy authorize @profile @profile.destroy redirect_to member_path(current_member), notice: "#{@profile.Kind} profile was successfully destroyed." end private # Use callbacks to share common setup or constraints between actions. def set_profile @profile = Profile.find(params[:id]) end # Only allow a list of trusted parameters through. def profile_params params.require(:profile).permit(:name, :bio, :picture, :kind) end end