2016-03-25 10 views
-2

Ich habe gerade dieses Problem in meinem Controller, und ich verstehe nicht, was los ist. Es gibt eine undefinierte Methode toggle! für Like::ActiveRecord_AssociationRelation: Oder für meine create Aktion funktioniert alles, aber nicht mit der Update-Aktion. Dies ist eine grundlegende wie Controller zu mögen und im Gegensatz zu einem Ereignis, jemand und so weiter.Nicht definierte Methode `toggle! ' für #: ActiveRecord_AssociationRelation:

class LikesController < ApplicationController 

    before_action :authenticate_user! 

    def create 
    @project=Project.find(params[:project_id]) 
    @like= @project.likes.where(user:current_user).first_or_initialize(name:current_user.first_name) 
    @like.toggle(:heart) 
    @like.save 
    Notification.create(user:current_user, user_name: current_user.first_name, action:'like', recipient:@project.subject) 
    redirect_to project_path(@project) 
    end 



    def update 
    @project=Project.find(params[:project_id]) 
    @like= @project.likes.where(user:current_user) 
    @like.toggle(:heart) 
    @like.save 
    Notification.create(user:current_user, user_name: current_user.first_name, action:'Unlike', recipient:@project.subject) 
    redirect_to project_path(@project) 
    end 
end 
+0

Ich denke, dies: '@ wie = @ project.likes.where (user: current_user) .first' sollte funktioniert gut. –

+0

sollten Sie Toggle von '@ like.first.toggle (: Herz)' oder 'Like.toggle (: Herz)' –

Antwort

1

toggle ist im Grunde eine Klassenmethode; Sie können es nicht auf einem ActiveRecord::Relation Objekt aufrufen. Sie müssen zuerst auf Objekt isolieren, und dann können Sie alle toggle.

Sie können first nennen, last oder andere ähnliche Verfahren wie ein Objekt zu erhalten:

@project.likes.where(user: current_user).first 
+0

Danke Jungs, die Arbeit ist. –

Verwandte Themen