Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- class PinsController < ApplicationController
- before_action :set_pin, only: [:show, :edit, :update, :destroy]
- before_action :correct_user, only: [:edit, :update, :destroy]
- before_action :authenticate_user!, except: [:index, :show]
- respond_to :html
- def index
- @pins = Pin.all.order("created_at DESC").paginate(:page => params[:page], :per_page => 8)
- respond_with(@pins)
- end
- def show
- respond_with(@pin)
- end
- def new
- @pin = current_user.pins.build
- respond_with(@pin)
- end
- def edit
- end
- def create
- @pin = current_user.pins.build(pin_params)
- if @pin.save
- redirect_to @pin, notice: "Pin was successfully created."
- else
- render action: "new"
- end
- end
- def update
- if @pin.update(pin_params)
- redirect_to @pin, notice: "Pin was successfully updated."
- else
- render action: "edit"
- end
- end
- def destroy
- @pin.destroy
- respond_with(@pin)
- end
- def upvote
- @pin = Pin.find(params[:id])
- @pin.upvote_by current_user
- redirect_to :back
- end
- def downvote
- @pin = Pin.find(params[:id])
- @pin.downvote_from current_user
- redirect_to :back
- end
- private
- def set_pin
- @pin = Pin.friendly.find(params[:id])
- end
- def correct_user
- @pin = current_user.pins.find_by(id: params[:id])
- redirect_to pins_path, notice: "Not authorized to edit this pin" if @pin.nil?
- end
- def pin_params
- params.require(:pin).permit(:description, :image)
- end
- end
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement