Erstellen von Formularen für relationale Daten in Rails
-
22-07-2019 - |
Frage
Ich habe eine Form, die ich brauche für eine Tabelle anzuzeigen, die eine Beziehung mit ein paar anderen Tabellen hat. Zum Beispiel habe ich eine Tabelle „Fälle“ (man denkt, Ermittler Fall ist), dass has_one Antragsteller und has_one Client.
für den Fall, dass Daten auszufüllen, Kundendaten und Berechtigte Datenwürde ich die Form wie die Felder angezeigt werden soll. 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?
Lösung
Klingt wie Sie sind für die accepts_nested_attributes_for
Methode von Active suchen. Sie müssen Ihre Form Handwerk mit
- form.fields_for :claimant do |claimant_form|
= claimant_form.text_field :name
Sie können viel mehr Informationen in Ryan Daigle Blog-Post
Andere Tipps
Ich glaube nicht, es gibt einen Weg, wo man nur case.save anrufen und es wird funktionieren.
Um die Form zu machen, schauen Sie in mit 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 konfigurieren dann in Ihrer neuen Methode könnten Sie möglicherweise so etwas tun:
claimant = Claimant.new(params[:claimant])
claimant.save
Was nicht sonderlich komplizierter ist.
Sehen Sie mein complex-form-Beispiele zum Erstellen von verschachtelten Multi -Modell bildet. Dieser wird aktualisiert mit Rails 2.3 des accepts_nested_attributes_for
zu arbeiten.
Es ermöglicht Ihnen, nisten die Verbände alle unter params[:case]
wie Sie wollen. Wenn Sie case.save
Anruf alles andere auch gespeichert werden.