From 87bc1becb0a228e5088167b973f57a1a203f2ec1 Mon Sep 17 00:00:00 2001 From: Brenda Wallace Date: Tue, 14 Feb 2017 11:49:02 +1300 Subject: [PATCH] Reduced repeating code in likes controller --- app/controllers/likes_controller.rb | 26 ++++++++++++-------------- 1 file changed, 12 insertions(+), 14 deletions(-) diff --git a/app/controllers/likes_controller.rb b/app/controllers/likes_controller.rb index 30f7f17e1..5f7c5dac9 100644 --- a/app/controllers/likes_controller.rb +++ b/app/controllers/likes_controller.rb @@ -6,26 +6,14 @@ class LikesController < ApplicationController @like = Like.new(member: current_member, likeable: find_likeable) return failed(@like, message: 'Unable to like') unless @like.likeable && @like.save - respond_to do |format| - format.html { redirect_to @like.likeable } - format.json do - render(json: render_json(@like, liked_by_member: true), - status: :created) - end - end + success(@like, liked_by_member: true, status_code: :created) end def destroy @like = Like.find_by(id: params[:id], member: current_member) return failed(@like, message: 'Unable to unlike') unless @like && @like.destroy - respond_to do |format| - format.html { redirect_to @like.likeable } - format.json do - render(json: render_json(@like, liked_by_member: false), - status: :ok) - end - end + success(@like, liked_by_member: false, status_code: :ok) end private @@ -43,6 +31,16 @@ class LikesController < ApplicationController } end + def success(like, liked_by_member: nil, status_code: nil) + respond_to do |format| + format.html { redirect_to like.likeable } + format.json do + render(json: render_json(like, liked_by_member: liked_by_member), + status: status_code) + end + end + end + def failed(like, message) respond_to do |format| format.json { render(json: { 'error': message }, status: :forbidden) }