2017-02-12 5 views
1

Ich versuche, ein Formular auf meiner new.html.erb-Seite zu erstellen, und es gibt mir eine undefinierte Methode `task_presentations_path'-Fehler.So verwenden Sie das Formular für polymorphe Verknüpfungen

= form_tag [@task, Presentation.new] do |f| 
    = f.label :summary 
    = f.text_field :summary 

tasks_controller

def new 
    @task = Task.new 
end 

Routen

resources :presentations do 
     resources :tasks 
    end 

Task-Modell

class Task < ApplicationRecord 
    belongs_to :taskable, polymorphic: true 
    has_one :task_type 
    has_one :task_status 
end 

Präsentationsmodell

class Presentation < ApplicationRecord 
    has_many :tasks, as: :taskable 
end 

Rake Aufgaben

  presentation_tasks GET  /presentations/:presentation_id/tasks(.:format)    tasks#index 
          POST  /presentations/:presentation_id/tasks(.:format)    tasks#create 
     new_presentation_task GET  /presentations/:presentation_id/tasks/new(.:format)   tasks#new 
     edit_presentation_task GET  /presentations/:presentation_id/tasks/:id/edit(.:format)  tasks#edit 
      presentation_task GET  /presentations/:presentation_id/tasks/:id(.:format)   tasks#show 
          PATCH /presentations/:presentation_id/tasks/:id(.:format)   tasks#update 
          PUT  /presentations/:presentation_id/tasks/:id(.:format)   tasks#update 
          DELETE /presentations/:presentation_id/tasks/:id(.:format)   tasks#destroy 
+0

Ich würde 'Bündel exec Rake Routen laufen lassen | grep task "und sehen, wie diese Route aufgerufen wird. Sieht so aus als wäre es presentation_tasks_path, aber ich bin mir nicht sicher – mccalljt

+0

Können Sie weitere Informationen über den Controller und das Modell hinzufügen? – Milind

+0

ja ich habe aktualisiert. – brandoncodes

Antwort

0

Als Ihr task Modell ist ein nested Ressource von presentation, Ursprünglich es nur existiert sollte, wenn es presentation Modell present.So ist ...

######in the controller. 

def new 
    @presentation = Presentation.find(params[:id) 
    @task = @presentation.tasks.new 
end 

#####in your view 
= form_tag [@presentation,@task] do |f| 
    .... 
    .... 

Hoffe es hilft :)

+0

Ja, ich habe das tatsächlich versucht. Wenn ich das tue, ist der Fehler, den ich bekomme, undefinierte Methode 'tasts_path 'auf dem Formular – brandoncodes

+0

, das form params ändern ... ich habe meine Antwort aktualisiert. als seine Präsentation/Aufgaben ... müssen Sie zuerst die Präsentation und dann die Aufgaben an das Formular übergeben ... überprüfen Sie meine Antwort. Lassen Sie mich wissen, ob es funktioniert :). – Milind

+0

danke! :) es funktioniert. Aber jetzt ist der Fehler, den ich bekomme, auf dem Label, undefined Methode "Label" für nil: NilClass – brandoncodes

Verwandte Themen