Ich folge Michael Hartls Rails Guide (zu Kapitel 9). Wenn ich versuche, auf die Seite zuzugreifen, die dem Profil des Benutzers entspricht, zeigt der Browser folgende Fehlermeldung an:
%Vor%Hier ist meine users_controller.rb
%Vor%Die Seite wird ohne die Zeile geladen:
%Vor%Aber mit seiner Einbeziehung gehen Dinge schief und ich kann nicht herausfinden warum.
Hier ist auch die routes.rb
%Vor%Jede Hilfe ist willkommen!
Anstelle von Before Action in Users_controller versuchen Sie es vor dem Filter Ihr Code sieht also so aus:
%Vor%Ich hatte genau den gleichen Fehler!
Wenn Hurmans Antwort tatsächlich Ihr Problem gelöst hat, liegt der Grund daran, dass Sie eine ältere Version (d. h. & lt; 4.0.0) von Schienen betreiben. before_filter
wurde in dieser Version umbenannt in before_action
( Ссылка ), weitere Informationen in Rails 4: before_filter vs. before_action
Neben @Hurman Guls Antwort werde ich Ihnen hoffentlich einige Details darüber geben, warum Sie dieses Problem sehen ...
Ihr Controller führt eine Aktion für eine nicht vorhandene Variable aus
Der Fehler liegt darin, dass eine Ihrer Aktionen versucht, eine Aktion für eine Variable auszuführen, die entweder nicht festgelegt ist oder keinen Inhalt hat ( nil ). Der Fehler bedeutet im Grunde, dass Sie versuchen, den ".name" -Teil einer Variablen aufzurufen, wo sie nicht existiert
%Vor%Dies bedeutet im Grunde, dass Sie versuchen, @ user.name zu laden, wenn @user wahrscheinlich nicht existiert. Die Art, wie ich das Problem beheben möchte, besteht darin, zunächst eine gewisse Logik auf Ihre Ansicht anzuwenden:
%Vor% Ich hatte das gleiche Problem mit 4.1.6 .
Das Problem ist, dass Sie die before_action als private
definiert haben. Ich weiß nicht warum, aber diese Art von Sichtbarkeit ist mit der Before_action-Last des Controllers in Rails verwechselt. Also bring signed_in_user
außerhalb dieses Bereichs und es sollte wieder funktionieren.
Hoffe, das hilft!
Tags und Links ruby-on-rails railstutorial.org