Undefinierte lokale variable oder Methode 'current_user'

Ich bin derzeit in einer RoR tutorial (http://railstutorial.org/chapters/sign-in-sign-out#sec:signin_success ist der entsprechende Abschnitt), die scheint ziemlich gut, obwohl ich in ausführen Folgendes problem beim anzeigen der Beispiel-Website.

Extracted source (around line #10):

7:          <li><%= link_to "Home", root_path %></li>
8:          <li><%= link_to "About", about_path %></li>
9:          
10:             <% if signed_in? %>
11:                 <li><%= link_to "Profile", current_user %></li>
12:                 <li><%= link_to "Sign out", signout_path, :method => delete %></li>
13:             <% else %>

Wie Sie sehen können, das Problem ist die aus meiner Methode "signed_in?", was soll überprüfen, ob der Benutzer eingeloggt ist oder nicht, indem überprüft wird, ob der current_user-variable gesetzt ist (ich habe den rest von dem code aus dem Hilfsprogramm geben, um ein Kontext, Entschuldigung):

module SessionsHelper

  def sign_in(user)
    cookies.permanent.signed[:remember_token] = [user.id, user.salt]
    current_user = user
  end

  def sign_out
    cookies.delete[:remember_token]
    current_user = nil
  end

  def current_user= (user)
    @current_user ||= user_from_remember_token
  end

  def signed_in?
    !current_user.nil?
  end

  private

    def user_from_remember_token
      User.authenticate_with_salt(*remember_token)
    end

    def remember_token
      cookies.signed[:remember_token] || [nil, nil]
    end

end

Aus meinem Verständnis .nil? ist eine Methode, die prüft, ob ein Objekt nicht definiert wurde und daher das Objekt wird nicht definiert, sollte nicht einen Fehler erzeugen, sondern false zurückgeben? Ich suchte die Anleitung für alle Fälle von current_user (vor der Prüfung zu sehen, ob jemand anderes hatte dieses problem mit wenig Erfolg) und mein code scheint korrekt zu sein, also bin ich ein wenig verwirrt, und wenn jemand in der Lage ist, mir zu helfen, zu verstehen, wie Ruby Variablen sind, soll angesprochen werden und warum mein code nicht funktioniert, wäre ich sehr dankbar.

Edit:

Ich bin mir nicht sicher, wenn es wichtig ist, mit dem Umfang wie ich bin erst am Anfang beide Rails und Ruby, aber die Helfer SessionsHelper wird von meiner Benutzer-controller und-Ansichten (es gehört zu meinen Anwendungen controller)

InformationsquelleAutor djlumley | 2010-11-13

Schreibe einen Kommentar