凡@user是最近創建的用戶,並且@person是現有的人員。
@user.person = @person
@user.save
或者:
User.new :person => @person, ... #other attributes
或PARAMS形式:
User.new(params[:user].merge({person => @person}))
至於形式去:
<% form_for @user do |f| %>
...
<% fields_for :person do |p| %>
<%= p.collection_select, :id, Person.all, :id, :name, :include_blank => "Use fields to create a person"%>
<%= p.label_for :name%>
<%= p.text_field :name %>
...
<% end %>
<% end %>
和用戶控制器:
def create
@user = User.create(params[:user])
@person = nil
if params[:person][:id]
@person = Person.find(params[:person][:id])
else
@person = Person.create(params[:person])
end
@user.person = @person
...
end
這裏存在嵌套窗體的問題。如何將現有人員與新用戶聯繫起來? – EmFi 2009-10-23 22:00:02
是的,如果兩者都是同時創建的,那就是我所做的,但是如果其中一個已經存在,這將無法工作。 – 2009-10-23 22:30:00
我更新了代碼,使其即使在有人存在的情況下也能正常工作 – Mike 2009-10-24 02:45:07