Ich versuche, eine Bearbeitungsaktion für ein Post-Objekt zu schreiben, das innerhalb der Projekte verschachtelt ist. Nach dem Aussehen ich mache alles so, wie es sein sollte, aber aus irgendeinem Grund, wenn ich komme, um das Formular zu laden, erscheint diese Fehlermeldung "Erstes Argument in Form kann nicht enthalten oder leer sein"Argumente, die nicht übergeben werden Bearbeitungsaktion verschachtelte Objekte
Die Parameter sind send ist korrekt "project_id" => "308", "id" => "41", aber es scheint, als ob die Form nicht weiß, was sie damit machen soll.
Form
.....
<div class="row">
<div class="col-md-12" id="postform">
<%= form_for ([@project, @post]), html: { multipart: true } do |f| %>
....
Ansicht
....
<% if current_user?(post.user) %>
<%= link_to edit_project_post_path(@project, post) do %>
....
Controller
....
before_action :logged_in_user, only: [:create, :edit]
def edit
@project = Project.find(params[:project_id])
@post = @project.posts.find(params[:id])
end
....
Post ist ein verschachteltes Objekt von Projekten und so hat es auf der Strecke s Datei wurde Config.
Irgendwelche Ideen, was könnte dieses Problem verursachen?
Ich dachte, dass vielleicht muss ich auf dem Formular angeben, was diese Werte verwendet für ...
Danke für die Hilfe
---- ---- bearbeiten
resources :projects do
resources :comments,:posts
end
resources :posts, only: [:create, :destroy, :edit]
Basierend auf der Fehlermeldung sagt es Ihnen, dass '@ project' in' form_for ([@project, @post]) 'entweder' nil' oder '[]' ist. Können Sie 'Rake-Routen' für diese Seiten einfügen? –
'<% = form_for ([@ projekt, @post], html: {mehrteil: wahr}) do | f | %> '. Wenn Sie Parens verwenden, umhüllen Sie alle Argumente! – max
Der Fehler scheint jedoch nicht in dem bereitgestellten Code zu sein. Hast du versucht, das Problem auseinander zu nehmen? Zum Beispiel indem Sie '[@project, @post] .inspect' ausführen, um zu überprüfen, dass Sie die Variablen nicht versehentlich irgendwo neu zuweisen? Oder vielleicht retten Sie den 'ActiveRecord :: RecordNotFound' Fehler in Ihrem Controller, ohne den Controller-Flow zu verlassen? – max