2017-01-15 2 views
0

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] 
+0

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? –

+0

'<% = form_for ([@ projekt, @post], html: {mehrteil: wahr}) do | f | %> '. Wenn Sie Parens verwenden, umhüllen Sie alle Argumente! – max

+0

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

Antwort

0

form_for soll nicht mit multipart: true arbeiten, versuche das zu entfernen oder versuche es mit form_tag.

Mit freundlichen Grüßen.

Verwandte Themen