2013-01-09 14 views
5

Próbuję znaleźć wdzięczny sposób zapisywania dodatkowego pola o nazwie opis w modelu Powołanie (poniżej). Moje modele są ustawione tak:Szyny has_many: poprzez zapisywanie dodatkowych pól

class Physician < ActiveRecord::Base 
    has_many :appointments 
    has_many :patients, through: :appointments 
end 

class Appointment < ActiveRecord::Base 
    belongs_to :physician 
    belongs_to :patient 
end 

class Patients < ActiveRecord::Base 
    has_many :appointments 
    has_many :physicians, through: :appointments 
    attr_accessible :name 
end 

Moim zdaniem mam odpowiednie kwadraty setup, aby zapisać dane do tabeli łączącej ale chcę przesunąć w dodatkowym polu „Opis” być zapisywane z przyłączyć. Poniżej jest to, co jest moim zdaniem:

<div class="field"> 
    <fieldset> 
    <legend>Patients</legend> 
    <% @patients.each_slice(2) do |slice| %> 
    <div class='row'> 
     <% slice.each do |patient| %> 
     <div class='span3'> 
      <%= label_tag "physician_patient_ids_#{patient.id}" do %> 
      <%= check_box_tag 'physician[patient_ids][]', patient.id, 
           @physician.patients.include?(patient), 
           { id: "physician_patient_ids_#{patient.id}" } %> 
      <%= patient.name %> 
      <% end %> 
      <!-- need to add in description here somehow --> 
     </div> 
     <% end %> 
    </div> 
    <% end %> 
    </fieldset> 
</div> 
+0

Czy Pacjenci model nie przegap stowarzyszenie has_many? –

+0

Tak, to był bałagan z mojej strony. Są tam relacje, zmienię je, aby to odzwierciedlić. – lscott3

Odpowiedz

2

Można użyć accepts_nested_attributes_for aktualizować atrybuty stowarzyszenie.

W Model:

accepts_nested_attributes_for :appointments, :allow_destroy => true 

W Widok:

<%= f.fields_for :appointments do |apt| %> 
    <%= apt.object.patient.name %> 
    <%= apt.text_field :description %> 
<% end %> 

Patrz http://api.rubyonrails.org/classes/ActiveRecord/NestedAttributes/ClassMethods.html

+0

Nie zapomnij również o konieczności dodania niezbędnych parametrów do strong_params w kontrolerze –

Powiązane problemy