run/rails/app/controllers/photos_controller.rb (48 lines of code) (raw):
class PhotosController < ApplicationController
before_action :set_photo, only: [:show, :edit, :update, :destroy]
def index
@photos = Photo.all
end
def show
end
def new
@photo = Photo.new
end
def edit
end
def create
@photo = Photo.new photo_params
image = params[:photo][:image]
caption = params[:photo][:caption]
if @photo.save
@photo.image.attach image if image
redirect_to photos_path, notice: "Photo was successfully uploaded."
else
flash.now[:alert] = "Photo could not be saved."
render :new
end
end
def update
respond_to do |format|
if @photo.update photo_params
format.html { redirect_to @photo, notice: "Photo was successfully updated." }
format.json { render :show, status: :ok, location: @photo }
else
format.html { render :edit, status: :unprocessable_entity }
format.json { render json: @photo.errors, status: :unprocessable_entity }
end
end
end
def destroy
@photo.image.purge
@photo.destroy
redirect_to photos_path, notice: "Photo successfully deleted"
end
private
def set_photo
@photo = Photo.find params[:id]
end
def photo_params
params.require(:photo).permit(:caption)
end
end