如何使用rails表单更新多个模型

时间:2011-08-28 21:08:50

标签: ruby-on-rails-3 activerecord

我有两个模型

class Office < ActiveRecord::Base
    has_many :locations, :dependent => :destroy
end

class Location < ActiveRecord::Base
    belongs_to :office
end

办公室模型new.html.erb以及OfficeController

中的以下代码
  def create
    @office = Office.new(params[:deal])
    if @office.save
      redirect_to office_url, :notice => "Successfully created office."
    else
      render :action => 'new'
    end
  end

如何在Location的{​​{1}}中添加new.html.erb模型的字段?

我希望能够以相同的形式拥有位置字段。

1 个答案:

答案 0 :(得分:3)

您必须使用嵌套属性才能执行此操作。幸运的是,Rails让它变得非常简单。这是如何做到的:

  1. 首先,通过添加以下行向Office表示您正在为其提供位置字段: accepts_nested_attributes_for :location

  2. 现在,在new.html.erb中,添加所需的字段。假设我们想拥有城市和州:

    <%= f.fields_for :location do |ff| %>
        <%= ff.label :city %>
        <%= ff.text_field :city %>
    
        <%= ff.label :state %>
        <%= ff.text_field :state %>
    <% end %>
    
  3. 就是这样!