Rails:使用嵌套属性中的信息更新现有记录

时间:2013-10-13 02:00:55

标签: ruby-on-rails ruby-on-rails-3 ruby-on-rails-3.2 nested-attributes

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

我认为这是

<%= 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的记录中?

由于

1 个答案:

答案 0 :(得分:0)

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

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