0

我在我的用戶視圖下嵌套屬性,並希望更新業務表中現有的記錄信息,但是當我在嵌套屬性中保存值時,它只是添加一條新記錄。Rails:使用來自嵌套屬性的信息更新現有記錄

我有這個在我看來

<%= form_for @user, :html => {:multipart => true} do |f| %> 
    <%= f.text_field :company_name %> 
    <%= f.fields_for :businesses do |biz| %> 
    <%= biz.text_field :street %> 
    <%= biz.text_field :city %> 
    <%= biz.text_field :zip %> 
    <% end %> 
<% end %> 

然後,我有這個在我的控制器:

def edit 
    @user = User.find(current_user.id) 
    @user.businesses.new if @user.businesses.empty? 
end 

def update 
    @biz = Business.find_or_create_by_name(params[:user][:company_name]) 
end 

所以更新方法允許「COMPANY_NAME」(這不是在嵌套的屬性)除用戶表中保存在業務表。但是現在我想獲得街道,城市和郵政編碼,這是嵌套屬性,可以通過company_name's記錄保存在業務記錄中。

我想我得到的業務ID,然後根據該ID更新記錄,不知道如何?

我可以這樣做

def update 
    @biz = Business.find_or_create_by_name(params[:user][:company_name]) 
    @biz.id #to get the id of the business when updating 
end 

多數民衆贊成在我卡住了,我怎麼保存在@ biz.id的記錄那些值?

感謝

回答

0

一旦你找到剛剛更新@biz對象或創建它:

def update 
    @biz = Business.find_or_create_by_name(params[:user][:company_name]) 
    @biz.update_attributes(params[:businesses]) 
end 
+0

它似乎並不像它的更新現有業務。它更新創建的「新」記錄 – hellomello

+0

它將更新'@ biz'變量中的任何內容。如果沒有'name'字段與'params [:user] [:company_name]'匹配的'Business',那麼它會用'name = params [:user] [:company_name]'創建一個新的'Business'實例'然後更新。 – tyler