2013-01-09 39 views
5

Tôi đang cố gắng tìm một cách duyên dáng để lưu một trường bổ sung được gọi là mô tả về mô hình Cuộc hẹn (bên dưới). Các mô hình của tôi được thiết lập như sau:Rails has_many: thông qua lưu các trường bổ sung

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 

Theo quan điểm của tôi, tôi muốn trượt trong trường "mô tả" bổ sung cần lưu với tham gia. Dưới đây là những gì có trong quan điểm của tôi:

<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

Liệu Bệnh nhân mẫu không bỏ lỡ các hiệp hội has_many? –

+0

Vâng, đó là một mớ hỗn độn trên một phần của tôi. Các mối quan hệ ở đó, tôi sẽ chỉnh sửa nó để phản ánh điều đó. – lscott3

Trả lời

2

Bạn có thể sử dụng accepts_nested_attributes_for để cập nhật thuộc tính kết hợp.

Trong mẫu:

accepts_nested_attributes_for :appointments, :allow_destroy => true 

Trong Xem:

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

Tham khảo http://api.rubyonrails.org/classes/ActiveRecord/NestedAttributes/ClassMethods.html

+0

Đừng quên bạn cũng sẽ cần phải thêm các thông số cần thiết để strong_params trong bộ điều khiển của bạn –

Các vấn đề liên quan