2017-04-17 4 views
0

So mache ich eine Bearbeitungsseite, die Tiere und die Besitzer zu diesem Tier bearbeiten kann. Es gibt eine Join-Tabelle, die enthält, was Animal zu welchem ​​Besitzer gehört.Display Schienen Join Tabelle Feld

Genauer gesagt Angenommen, Sie haben:

<% form_for :animal, url: animal_path(@edit_animal), method: :patch do |edit| %> 
... animal labels and fields to edit go here ... 
    <%= edit.fields_for :owners do |owner| %> 
     <%= owner.label :name, "Name" %> 
     <%= owner.text_field :name %> 
    <%end%> 
    <%=edit.submit 'Submit'%> 
<%end%> 

Modell Verbände:

AnimalOwner < ApplicationRecord 
    belongs_to :animal 
    belongs_to :owner 

Owner < ApplicationRecord 
    has_many :animal_owners 
    has_many :animals, :through => :animal_owners 

Animal < ApplicationRecord 
    has_many :animal_owners 
    has_many :owners, :through => :animal_owners 

Grundsätzlich bin ich nicht sicher, ob ich das Formular korrekt Tabellen beitreten tue. Ich wollte auch in der Lage sein, die Daten anzuzeigen, die derzeit in der Datenbank gespeichert werden: Wert, aber wie würde ich das für eine Join-Tabelle tun?

+0

können Sie bitte die Modelle und ihre Zuordnungen richtig hinzufügen –

+0

Mit einer einfachen Join-Tabelle, wie Sie beschreiben, können Sie ein Bearbeitungsformular aus drei verschiedenen Perspektiven haben. Von der Tier-Steuerung/-Ansicht, von der Besitzer-Steuerung/-Ansicht und von der Tier-Besitzer-Steuerung/-Ansicht. Es wäre ziemlich klar, ob der angemeldete Benutzer der Eigentümer ist und jedes Tier, das er anlegt, der Besitzer von ist. Aber wenn ein Tier mehrere Besitzer haben kann, wie sieht dann das Formular aus, um die Besitzer-Tier-Beziehung zu erstellen? Das Bearbeitungsformular wäre eine einfache Ableitung davon. –

Antwort

2

Wenn Sie die Rails-Methode ausführen, müssen Sie den Wert für vorhandene Datenbankdaten nicht angeben.

<%= owner.text_field :name%> 

Dies sollte die Daten zu oben genannten Feld auffüllen. Auch ist es immer besser, eine einzige für beide "neue" und "bearbeiten" -Methoden zu verwenden. Und für "Bearbeiten" können Sie auch "PUT" als Methodentyp verwenden.


die field_for Tag verwenden, werden Sie auch Ihre Animal Modell, das es accepts_nested_attributes_for :owners sagen müssen. Auf diese Weise können die verschachtelten Parameter der Instanz Animal zugeordnet werden.

+0

Vielen Dank für Ihre Hilfe. Funktioniert super! – codingdraculasbrain