0

我在我的用户视图下有嵌套属性,并且想更新我的业务表中的现有记录信息,但是当我在嵌套属性中保存值时,它只是添加了一条新记录。

我认为这是

<%= 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

因此,update 方法允许“company_name”(不在嵌套属性中)除了保存在Users表中之外,还保存在Business表中。但现在我想获取街道、城市和邮编,即嵌套属性,与记录一起保存在业务记录中。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 的记录中?

谢谢

4

1 回答 1

0

@biz找到或创建对象后只需更新它:

def update
  @biz = Business.find_or_create_by_name(params[:user][:company_name])
  @biz.update_attributes(params[:businesses])
end
于 2013-10-13T02:06:50.007 回答