2016-04-15 1 views
-1

Ich versuche, der Benutzer in der Lage zu entfernen sein upvote durch erneutes Klicken auf die Schaltfläche upvoteWarum ist nicht meine, wenn else-Anweisung in Lotsenarbeits [Rails 4]

Hier ist mein Controller

zu machen

Ich habe versucht, die wenn sonst im Index, aber es wurde zu kompliziert, warum funktioniert es nicht? Beachten Sie, dass currentUserLike die Upvote-Aktion des Benutzers zerstört. Es sieht aus wie @post und Die upvote Taste ist nicht mehr arbeiten, poste ich nicht den Index, weil ich es nicht wieder ändern, wenn ich den Controller nicht

+0

Was nicht funktioniert? Hast du überprüft, ob es in den if oder else Block geht? –

+0

Die Upvote-Taste ist nicht mehr upvoting –

Antwort

0

Versuchen Sie folgendes:

def upvote 
      @post = Post.find(params[:id]) 
      if current_user.voted_up_on? @post 
      @currentUserLikes = PublicActivity::Activity.where(trackable_id: @post.id, owner_id: current_user.id, key: "post.like") 
      @currentUserLikes.destroy_all 
      else 
      @post.upvote_by current_user 
      @post.create_activity :like, 
           owner: current_user, 
           recipient: @post.user 
      end 
     end 
+0

Danke, jetzt funktioniert es, aber fand heraus, dass die @currentUserLikes funktioniert nicht, weißt du warum? –

+0

Ich vermute, das Problem liegt in den where() Bedingungen. Benutze die Konsole, um herauszufinden, ob diese Bedingung das zurückgibt, wonach du suchst :) –

0

ändern ist nicht auf ein Beitrag, wenn Sie überprüfen, ob der Benutzer es gewählt hat. Versuchen Sie, @post = Post.find (params [: id]) über Ihre if-Anweisung zu verschieben.

Verwandte Themen