Form_for "Erstes argument in der form enthalten, nicht null oder leer sein" Fehler
Ich kann nicht herausfinden, warum ich diese Fehlermeldung bekommen, und was es genau bedeutet.
Erste argument in der form enthalten, nicht null oder leer sein(Zeile 3)
Hinzufügen eines neuen Post
<%= form_for @post do |f| %> //Error here
<p>
<%= f.label :title, 'Title' %><br/>
<%= f.text_field :title %><br/>
</p>
<p>
<%= f.label :content, 'Content'%><br/>
<%= f.text_area :content %><br/>
</p>
<p>
<%= f.submit "Add a New Post" %>
</p>
<% end %>
Controller:
class PostsController < ApplicationController
def index
@posts = Post.all
end
def show
@post = Post.find(params[:id])
end
def new
@post = Post.new
end
def create
@post = post.new(params[:post])
if @post.save
redirect_to posts_path, :notice => "Your post was saved"
else
render "new"
end
end
def edit
end
def update
end
def destroy
end
end
- wie hast du das erklären
@post
? - Ihre @post sollte nil
- zeigen Sie uns Ihre controller-code
- meine neue Aktion in der post hatte einen Tippfehler, danke für deine Hilfe
- Sicherlich
@post = post.new(params[:post])
sein sollte " @post = post.new(params[:Beitrag]) - Abstimmungsergebnis repoen, weil ich glaube die Frage ist ziemlich klar und eindeutig, und ich bin mir ziemlich sicher, dass es verursacht wird durch die Frage darauf hingewiesen, in den beiden nachfolgenden Antworten (disclaimer: eine der Antworten ist von mir).
- Verkaufen war richtig, sorry das es so lange gedauert, zu akzeptieren, Ihre Antwort, ich dachte, ich nahm vor langer Zeit.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Vorausgesetzt, Sie sind was diese von
PostsController
und mit der konventionellen Ansicht name, Ihrenew
Methode sollte erstellen Sie einen neuenPost
und zuordnen:Können Sie den Namen der Klasse (wie @Yuriy vorgeschlagen), aber der herkömmliche Weg ist, instanziiert ein neues Objekt. Das ermöglicht Ihnen die Wiederverwendung der gleichen form anzeigen für rendering-Fehler nach dem speichern.
Wenn Sie möchten, um zu sehen wie das normalerweise aussieht, erstellen Sie ein neues Rails-Projekt und verwenden Sie die scaffold-generator zum erstellen von Beispielcode.
Verwenden Sie diese (nicht empfohlen). Es sollte funktionieren.
Ihre
@post
istnil
Sollten Sie
form_for Post
stattdessen für einen neuen post.Zu verstehen, diesen Fehler gibt es zwei spezielle Gründe, warum Sie diese Fehlermeldung erhalten.
wenn Sie versuchen, Zugriff auf die Instanz-variable, die nicht definiert oder falsch geschrieben. Zum Beispiel in Ihrem controller, wenn Sie definieren, wie
ist und Sie versuchen, die access in der Ansicht wie
im obigen Fall erhalten Sie die gleiche Fehlermeldung.
Einem anderen Fall ist, wenn Sie nicht definieren Sie die Instanz oder weisen Sie nicht die Instanz-variable im controller und rufen Sie in der Ansicht erhalten Sie die gleichen Fehler.
War ich immer die gleiche Fehlermeldung. Ich war gerade versucht, zu simpleform und die Arbeit und erstellt ein Unterverzeichnis in meiner Ansicht zum testen von Formularen, wenn ich erhielt diese Fehlermeldung und dachte, dass simpleform war nicht installiert.
Bin ich davon ausgegangen, dass die Instanz-Variablen wie
@user
zur Verfügung standen, um alle meine Dateien anzeigen, einschließlich derer in können sagen, dass die@clients
Unterverzeichnis und dieclients/_form
für die Erstellung von neuen Kunden. Meine Annahme war falsch, denn@user
bewerten zuNil
wenn in sagen dieclients/_form
wenn es erstellt wurde, in der@user
Controller.