2

我正在使用 Rails Guides 中的一个示例:

http://guides.rubyonrails.org/association_basics.html#the-has_many-through-association

此示例具有以下模型设置:

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 Patient < ActiveRecord::Base
  has_many :appointments
  has_many :physicians, :through => :appointments
end

我试图了解如何做以下两件事:

  1. 如何设置视图以创建新患者并与现有医师和预约时间为他们分配预约
  2. 如何为现有患者分配与新医师的预约和预约时间

我浏览了处理嵌套表单的 RailsCasts 196 和 197,但我不明白它如何适用于这种情况。

有人可以提供一个例子或指点我这方面的指南吗?

谢谢

4

1 回答 1

3

首先,您必须将医师 ID 传递给您的PatientsController#new操作。如果用户通过以下链接到达那里,这将类似于

<%= link_to 'Create an appointment', new_patient_path(:physician_id => @physician.id) %>

或者,如果用户必须提交表单,您可以使用它提交一个隐藏字段:

<%= f.hidden_field :physician_id, @physician.id %>

然后,在PatientsController#new

def new
  @patient = Patient.new
  @physician = Physician.find(params[:physician_id])
  @patient.appointments.build(:physician_id => @physician.id)
end

new.html.erb

<%= form_for @patient do |f| %>
  ...
  <%= f.fields_for :appointments do |ff |%>
    <%= ff.hidden_field :physician_id %>
    ...
  <% end %>
<% end %>
于 2012-07-14T05:48:00.723 回答