2012-04-07 6 views
0

Ich habe eine hat viele durch die Assoziation.Routing benutzerdefiniert, löschen Aktion mit vielen durch Zuordnung

Unternehmen haben viele Benutzer durch Folgen. Ich möchte, dass Benutzer Firmen folgen können. - Ich benutze Devise für die Benutzer.

Ich habe benutzerdefinierte Aktionen für beide nach einem festen und unfolgenden Unternehmen. Die folgende Aktion funktioniert, aber ich habe Probleme mit dem Ablauf.

def follow 
    @firm = Firm.find(params[:id]) 
    @firm.users << current_user 
    respond_to do |format| 
    format.html { redirect_to @firm } 
    end 
end 

def unfollow 
@firm = Firm.find(params[:id]) 
current_user.follows.find_by_firm_id(@firm.id).destroy 
respond_to do |format| 
    format.html { redirect_to firms_url } 
end 

Ende in meinem routes.rb

resources :firms do 
    member do 
    post 'follow' 
    delete 'unfollow' 
    end 
end 

und in meinem Unternehmen sehen

<%= link_to 'unfollow', unfollow_firm_path(firm), :method => 'delete' %> 

ich folgende Fehler

NoMethodError in FirmsController#unfollow 

undefined method `follows' for nil:NilClass 

Meine Rake Routen zeigt bekommen Befehl die f ollowing

follow_firm POST /firms/:id/follow(.:format) firms#follow 
    unfollow_firm DELETE /firms/:id/unfollow(.:format) firms#unfollow 

Wenn Sie irgendwelche Ideen haben, wäre ich sehr dankbar!

Vielen Dank

Antwort

0

Der Fehler undefined method 'follows' for nil:NilClass kommt aus:

current_user.follows.find_by_firm_id(@firm.id).destroy

Sie müssen testen, ob ein Benutzer angemeldet ist, so dass current_user ist nicht nil.

Vielleicht ?:

current_user.follows.find_by_firm_id(@firm.id).destroy if current_user

+0

ich sehe, danke! Ich habe es versucht und es scheint jetzt die Aktion zu finden, aber es scheint jetzt die Sitzung zu beenden, ohne die Folge zu löschen. Dies führt zu einer erneuten Anmeldung. – RMcNairn

+0

Es schien, als hättest du keine Sitzung gehabt, sonst wäre current_user nicht null – DanS

+0

ok, das hilft, ich weiß, wo ich jetzt anfangen soll zu suchen! Danke für die Hilfe Dan. – RMcNairn

Verwandte Themen