From cd887e937382c8cfed9de5cd73d4f4c650a07f8c Mon Sep 17 00:00:00 2001
From: MrZYX <pr0fkill@gmail.com>
Date: Sun, 29 May 2011 18:15:46 +0200
Subject: [PATCH] fixed unlike the right way

---
 app/controllers/likes_controller.rb |  2 +-
 app/helpers/likes_helper.rb         |  2 +-
 app/models/user.rb                  | 12 ++++++++++--
 3 files changed, 12 insertions(+), 4 deletions(-)

diff --git a/app/controllers/likes_controller.rb b/app/controllers/likes_controller.rb
index 46c56fd0b4..fd8e77063c 100644
--- a/app/controllers/likes_controller.rb
+++ b/app/controllers/likes_controller.rb
@@ -32,7 +32,7 @@ class LikesController < ApplicationController
   end
 
   def destroy
-    if @like = Like.where(:post_id => params[:post_id], :author_id => current_user.person.id).first
+    if @like = Like.where(:id => params[:id], :author_id => current_user.person.id).first
       current_user.retract(@like)
     else
       respond_to do |format|
diff --git a/app/helpers/likes_helper.rb b/app/helpers/likes_helper.rb
index cec61f5b48..c9f9b38016 100644
--- a/app/helpers/likes_helper.rb
+++ b/app/helpers/likes_helper.rb
@@ -10,7 +10,7 @@ module LikesHelper
 
   def like_action(post, current_user=current_user)
     if current_user.liked?(post)
-      link_to t('shared.stream_element.unlike'), like_path(:post_id => post.id, :id => 'xxx'), :method => :delete, :class => 'unlike', :remote => true
+      link_to t('shared.stream_element.unlike'), like_path(current_user.like_for(post)), :method => :delete, :class => 'unlike', :remote => true
     else
       link_to t('shared.stream_element.like'), likes_path(:positive => 'true', :post_id => post.id ), :method => :post, :class => 'like', :remote => true
     end
diff --git a/app/models/user.rb b/app/models/user.rb
index 9ff8afecb8..e7b352c75c 100644
--- a/app/models/user.rb
+++ b/app/models/user.rb
@@ -188,12 +188,20 @@ class User < ActiveRecord::Base
   end
 
   def liked?(post)
+    if self.like_for(post)
+      return true
+    else
+      return false
+    end
+  end
+  
+  def like_for(post)
     [post.likes, post.dislikes].each do |likes|
       likes.each do |like|
-        return true if like.author_id == self.person.id
+        return like if like.author_id == self.person.id
       end
     end
-    return false
+    return nil
   end
 
   ######### Mailer #######################
-- 
GitLab