Form_for "Erstes Argument in Formular kann nicht NULL enthalten oder leer sein" -Fehler

8

Ich kann nicht herausfinden, warum ich diesen Fehler bekomme und was genau er bedeutet.

  

Das erste Argument im Formular darf nicht nil enthalten oder leer sein (Zeile 3)

Fügen Sie einen neuen Beitrag

hinzu %Vor%

Controller:

%Vor%     
Greg 13.03.2013, 07:40
quelle

5 Antworten

17

Angenommen, Sie rendern dies aus PostsController und verwenden den konventionellen View-Namen, Ihre new -Methode sollte ein neues Post erstellen und es zuweisen:

%Vor%

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.

    
Jim Stewart 13.03.2013, 07:46
quelle
1

Verwenden Sie dies (nicht empfohlen). Es sollte funktionieren.

%Vor%     
tarique313 19.02.2016 20:13
quelle
0

Ihr @post ist nil

Sie sollten stattdessen form_for Post für einen neuen Beitrag eingeben.

    
Yuriy Golobokov 13.03.2013 07:41
quelle
0

Um diesen Fehler zu verstehen, gibt es zwei spezifische Gründe, warum Sie diesen Fehler erhalten.

  1. , 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.

    
Packer 17.01.2015 07:02
quelle
0

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.

    
Clint Feekes 25.10.2017 16:17
quelle

Tags und Links