2016-06-26 10 views
0

Ich bin mit dieser Frage einige verwirrende Punkte konfrontiert. Hier ist meine User Story:Schienen Beziehung und Formen

"John muss eine (Problem) Aufgabe für das Wartungsteam mit dem Namen und der Nummer des Zuges erstellen, die Teile, die Probleme haben, die Priorität und wer für diese Aufgabe verantwortlich ist."

Jedes Problem könnte eine oder mehrere Lösungen haben und jeder Teil könnte ein Problem haben. Ein Zug könnte eine Menge Probleme (Aufgaben) haben, aber nicht mit dem gleichen Problem.

So, basierend auf, dass ich erstellt jene

class Issue < ActiveRecord::Base 
    belongs_to :project 
    has_many :train_issues, :dependent => :destroy 
    accepts_nested_attributes_for :train_issues, :reject_if => lambda { |a| a[:content].blank? } 
end 

class TrainIssue < ActiveRecord::Base 
    belongs_to :issue 
    has_many :train_displays 
    has_many :train_display_problems 
    accepts_nested_attributes_for :train_display_problems, :reject_if => lambda { |a| a[:content].blank? } 
end 

class TrainDisplay < ActiveRecord::Base 
    belongs_to :train_car 
    belongs_to :train_issue 
end 

class TrainProblemAndSolution < ActiveRecord::Base 
    belongs_to :TrainDisplayProblem 
    belongs_to :TrainDisplaySolution 
end 

Ich habe auch Train.rb und TrainCar.rb, sie alle miteinander verwandt und das funktioniert gut. Ich kann die train_id durch Anzeige und umgekehrt finden.

Meine Frage ist, wie kann ich ein Formular für diesen Benutzer erstellen, um ein Problem mit all diesen Informationen zu erstellen? Ich habe gelesen und einige Beispiele mit NestedForms gemacht, aber nicht gut funktioniert, das Formular erstellt ein Problem, aber nicht die TrainIssue mit den Parametern erstellen.

Vielen Dank!

+0

Sie müssen verschachtelte Formulare verwenden, mit 'fields_for: association'. Eine der einfachsten Methoden ist das "Cocoon-Juwel"! https://github.com/nathanvda/cocoon – dpedoneze

Antwort

0

Sie können Formtastic für verschachtelte Attribute verwenden. Sie können einfach ein Unterformular für sie hinzufügen: