Undefinierte Methode, die für alle Schienen Fehler
Ich versuche aus ruby on rails durch die Anleitung befindet sich auf http://ruby.railstutorial.org.
Ich habe bis zu dem Punkt, wo ich konnte, Benutzer anlegen und deren Namen und gravatar angezeigt:
http://localhost:3000/users/1
Nun möchte ich zur Anzeige aller Benutzer, wenn ein Benutzer geht an:
http://localhost:3000/users/
Hier ist mein controller:
class UsersController < ApplicationController
def index
@user = User.all
end
#...
end
Hier ist meine Ansicht.
#View for index action in user's controleer
<h1>All users</h1>
<ul class="users">
<% @users.each do |user| %>
<li><%= user.content %></li>
<% end %>
</ul>
Bekomme ich die folgende Fehlermeldung.
undefined method `each' for nil:NilClass
Kann mir jemand sagen, warum der index-Seite nicht so funktioniert wie ich es wollte.
benennen Sie Ihre Variablen
Ist richtig, @user ist gelöscht und die Instanz-Variablen nehmen den default-Wert von
@user
zu @users
im index-action des Controllers 😉Ist richtig, @user ist gelöscht und die Instanz-Variablen nehmen den default-Wert von
nil
wenn Sie versuchen, Zugriff auf Sie, so @users
ist nil
aber @user
eingestellt ist.InformationsquelleAutor Micheal | 2013-01-31
Du musst angemeldet sein, um einen Kommentar abzugeben.
Das problem kommt von der
@users
variable, die nicht existiert:In Ihrem index Aktion, die Sie setzen
@user
für alle Benutzer:Per Konvention verwenden wir pluralisiert Namen, wenn wir abrufen, mehrere Einträge aus der DB, das ist, warum Sie anrufen
@users
(man beachte das 's') in den Blick. Nur benennen Sie Ihre@user
zu@users
und es wird in Ordnung sein 😉Schienen ist nicht zu beschränken Sie die Verwendung einer bestimmten pluralisiert Namen, aber es ist eine Konvention, die Namen Ihrer Variablen entsprechend :
@users
ist die beste variable name beschreiben, eine Liste von mehrerenUser
records.Ok, das ist meine Frage ich.e wenn Schienen ist nicht beschränkt mich, und das ist nur eine Konvention, warum dann gibt es die Fehlermeldung -undefined-Methode jede
weil Sie nicht verwenden die exakt gleichen Variablen-Namen in der Ansicht. Wenn Sie definieren
@whatever = User.all
im controller die action, verwenden Sie die variable@whatever
im Blick.InformationsquelleAutor MrYoshiji