2009-08-05 1 views
0

Ich habe ein Formular, das ich für eine Tabelle anzeigen muss, die eine Beziehung mit ein paar anderen Tabellen hat. Zum Beispiel habe ich eine Tabelle "Fälle" (denken, Ermittlungsfall), die einen Anspruchsteller hat und einen Mandanten hat.Erstellen von Formularen für relationale Daten in Rails

Ich möchte, dass das Formular die Felder anzeigen, die für die Falldaten, Kundendaten und Antragstellerdaten ausgefüllt werden. Gibt es einen einfachen Weg, dies zu tun, so dass, wenn es abgegeben hat, wäre es so einfach sein wie:

case = Case.new(params[:case]) 
case.save 

Wie wäre es, wenn ich gerade die Vorlage und ein Formular nur für die Falldaten zu speichern?

Antwort

0

Klingt, als ob Sie nach der accepts_nested_attributes_for Methode der ActiveRecord suchen. Sie müssen Ihre Form fertigen

- form.fields_for :claimant do |claimant_form| 
    = claimant_form.text_field :name 

Verwendung Sie können viel mehr Informationen in Ryan Daigle's blog post

+0

Genau das, was ich gesucht habe! Vielen Dank! – intargc

0

Ich glaube nicht, dass es einen Weg gibt, wo Sie case.save aufrufen können, und es wird funktionieren.

Um das Formular zu erstellen, verwenden Sie fields_for. http://api.rubyonrails.org/classes/ActionView/Helpers/FormHelper.html#M001605

fields_for können Sie Felder hinzufügen, die in verschiedenen POST-Variablen gespeichert werden, so dass, wenn Sie die Felder korrekt konfiguriert dann in Ihrem neuen Methode, die Sie möglicherweise so etwas tun könnte:

claimant = Claimant.new(params[:claimant]) 
claimant.save 

Welche isn‘ Das ist furchtbar komplizierter.

+0

Nun, ich weiß, dass Sie wie so ein ganzes Beziehungs Objekt ausfüllen können: case = Case.new case.claimant = Claimant.new # Ausfüllen Fall und Antragsteller info case.save Und es Ich werde den Case und die Claimant-Sachen in der db ordentlich speichern ... Ich war mir einfach nicht sicher, ob du es mit dem Params-Zeug aus einem Formular machen könntest. Ich denke nicht. Danke! – intargc

0

Siehe meine complex-form-examples zum Erstellen von verschachtelten Multi-Modell-Formen finden. Dies wurde aktualisiert, um mit Rails 2.3 accepts_nested_attributes_for zu arbeiten.

Es ermöglicht Ihnen, die Assoziationen alle unter params[:case] wie Sie möchten zu verschachteln. Wenn Sie anrufen, wird auch alles andere gespeichert.