Как обновить несколько моделей с формой рельсов - PullRequest
4 голосов
/ 29 августа 2011

У меня есть следующие две модели

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 в new.html.erb из Office?

Я хочу иметь возможность иметь поля для местоположений в той же форме.

1 Ответ

3 голосов
/ 29 августа 2011

Для этого вам нужно использовать вложенные атрибуты.К счастью, Rails делает это довольно легко.Вот как это сделать:

  1. Сначала укажите Office, что вы также даете ему поля Location, добавив эту строку: 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 %>
    

Вот и все!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...