Ruby On Rails - "undefined method `id' 4:Fixnum"
Vor kurzem habe ich beschlossen, ich wollte eine Liste mit allen users
in meine Ruby On Rails-Anwendung - da konnte ich nicht herausfinden, wie Sie jede andere Art, ich habe mich für Teilstrecken.
Ich habe Folgendes auf meiner Seite für die Verwaltung (nur angeschlossen, um eine eigene Verwaltung-controller):
<%= render :partial => User.find(:all) %>
Dann habe ich eine Datei namens _user.html.erb
in meinem Benutzer Ordner anzeigen. Dieses enthält die folgenden:
<ul>
<% div_for @user.object_id do %>
<li><%= link_to user.username, user.username %></li>
<% end %>
</ul>
Wenn die Anwendung läuft und ich gehen in die Verwaltung der Seite, bekomme ich die folgende Fehlermeldung:
undefined method `id' 4:Fixnum
Er sagt, es ist wegen dieser Zeile (die in der partial-Datei):
<% div_for @user.object_id do %>
Ich bin mir nicht sicher, warum dies geschieht (und googeln für Stunden, um zu versuchen und finden Sie Ergebnisse und nur Lösungen finden, die nicht für mich arbeiten). Ich denke, dass es etwas zu tun mit meiner Nutzung der @user
Instanz-Variablen, aber ich bin mir nicht ganz sicher.
InformationsquelleAutor | 2011-02-09
Du musst angemeldet sein, um einen Kommentar abzugeben.
Erhalten Sie diesen Fehler, weil
div_for
erwartet eine active record-Objekt als argument, ruft dieid
- Methode auf. Sie übergeben in eine fixnum (das Ergebnis@user.object_id
), das ist nicht eine active record-Objekt und nicht einid
Methode.Also pass in
@user
statt@user.object_id
und es wird funktionieren.Ebenfalls sollten Sie verwenden
user
statt@user
, rails 3 ist keine Instanz-Variablen für die Teiltöne nicht mehr.Wenn Sie mit rails 3, die Sie verwenden müssen
user
statt@user
(und wenn Sie sind nicht verwenden, sollten Sieuser
sowieso, denn es funktioniert mit jedem rails-version).Vielen Dank! Mit "user" anstelle von "@user" - arbeitet ein Genuss! 😀
InformationsquelleAutor sepp2k
Verlieren .object_id Teil. Ich ernsthaft nicht glaube, warum sind Sie mit object_id!Sie haben einen guten Grund dies so zu tun? Trotzdem div_for umschließt ein div-Element um ein Objekt, also lassen Sie das .object_id Teil!!!!
@User dann ist nil. Überprüfen Sie Ihre controller wieder auf die @user-Instanz-variable. Ich denke, dass Sie nicht wollen, dass die @user zu null 🙂
Da es die user teilweise habe ich angenommen, dass es bereits weiß, was @user ist. Da möchte ich in einer Schleife durch die Benutzer, sicher soll es schon wissen, für was jeder @user ist? Wenn ich etwas in einem controller - was-controller (Benutzer oder verwalten)
Nein, wenn Sie noch nicht definiert ist das @user in Ihrem controller die view / partial kann nicht (und sollte nicht) denke mal das @user. Beantworten Sie die folgenden: 1. In welche controller-action Ihre Anzeige ist verlinkt? 2. Verwenden Sie Ressourcen? 3. Haben Sie versucht, render :partial => "your_partial", :object => @user ? Dies teilt die teilweise mit dem Objekt Rendern muss
InformationsquelleAutor Gerry
anstelle von Objekt, das Sie verwenden, ist es Spalte oder visa varsa Sie mit in dieser Zeit erhalten Sie diese Art von Fehler.
Beispiel
Ich bin mit id statt user = Benutzer.erstes Objekt.
InformationsquelleAutor Jigar Bhatt
Dieser versuchen, bei mir hat es geklappt.
statt
InformationsquelleAutor Dhanshree