Angenommen, Sie rendern dies aus PostsController
und verwenden den konventionellen View-Namen, Ihre new
-Methode sollte ein neues Post
erstellen und es zuweisen:
Sie können den Klassennamen verwenden (wie @Yuriy vorgeschlagen), aber die herkömmliche Methode besteht darin, ein neues Objekt zu instanziieren. Dadurch können Sie die gleiche Formularansicht für Renderfehler nach einem Speichern erneut verwenden.
Wenn Sie sehen möchten, wie dies normalerweise aussieht, erstellen Sie ein neues Rails-Projekt und verwenden Sie den Scaffold-Generator, um Beispielcode zu erstellen.
Verwenden Sie dies (nicht empfohlen). Es sollte funktionieren.
%Vor% Ihr @post
ist nil
Sie sollten stattdessen form_for Post
für einen neuen Beitrag eingeben.
Um diesen Fehler zu verstehen, gibt es zwei spezifische Gründe, warum Sie diesen Fehler erhalten.
, wenn Sie versuchen, auf die Instanzvariable zuzugreifen, die nicht definiert oder falsch geschrieben ist. Zum Beispiel in Ihrem Controller, wenn Sie wie
definieren %Vor%und Sie versuchen, in der Ansicht wie
zuzugreifen %Vor%im obigen Fall erhalten Sie den gleichen Fehler.
Ein weiterer Fall ist, wenn Sie die Instanz nicht definieren oder die Instanzvariable in Ihrem Controller nicht zuweisen und versuchen, in der Ansicht darauf zuzugreifen, erhalten Sie den gleichen Fehler.
Ich habe dieselbe Fehlermeldung erhalten. Ich habe gerade versucht, simpleform und arbeiten und erstellt ein Unterverzeichnis in meiner Ansicht zum Testen von Formularen, wenn ich diese Fehlermeldung und dachte, dass Simpleform nicht installiert wurde.
Ich nahm an, dass Instanzvariablen wie @user
für alle meine Ansichtsdateien verfügbar waren, einschließlich derjenigen in den Unterverzeichnissen @clients
und clients/_form
, die zum Erstellen neuer Clients verwendet wurden. Meine Annahme war falsch, da @user
zu Nil
ausgewertet wird, wenn sie in clients/_form
verwendet wird, wenn sie im @user
Controller erstellt wird.
Tags und Links ruby ruby-on-rails