Rails обновляет несколько моделей в одной форме - PullRequest
3 голосов
/ 07 июня 2011

Я пишу форму, которая использует formtastic для управления моделью BusinessUnit, однако при создании нового BusinessUnit также необходимо создать ряд других типов записей. Ассоциации между моделями следующие:

class BusinessUnit < ActiveRecord::Base
  has_many :business_unit_sites
  has_many :locations

class BusinessUnitSite < ActiveRecord::Base
  belongs_to :site
  belongs_to :business_unit

class Site < ActiveRecord::Base
  has_many :locations
  has_many :business_unit_sites

class Location < ActiveRecord::Base
  belongs_to :business_unit
  belongs_to :site 

Когда создается BusinessUnit, сайт также должен быть создан с использованием BusinessUnitSite в качестве таблицы соединения. Кроме того, должна быть создана запись местоположения, которая должна содержать внешний ключ для новой записи сайта, и именно здесь у меня возникают проблемы.

Я могу создать новое Местоположение с помощью вложенной формы (ниже), но Сайт необходимо будет создать вручную.

<%= semantic_form_for @business_unit do |f| %>
  <%= f.inputs do %>
    <%= f.input :name %>
    <%= f.input :business_unit_id %>
    <%= f.input :business_unit_group, :include_blank => false %>
    <%= f.input :business_unit_type %>
    <%= f.input :tax_region, :include_blank => false %>
    <%= f.semantic_fields_for :locations do |l| %>
      <%= l.input :name, :label => "Location Name" %>
    <% end %>
  <% end %>
  <%= f.buttons %>
<% end %>

Каков наилучший способ создания местоположения, записей сайта и обеспечения того, чтобы в хранилище содержался внешний ключ вновь созданного сайта?

1 Ответ

3 голосов
/ 07 июня 2011

Возможно, вы захотите сделать что-то вроде использования подхода "fields_for" для подобъектов в вашей форме.

См. Этот связанный ответ: Несколько объектов в форме Rails

Подробнее о fields_for:

http://api.rubyonrails.org/classes/ActionView/Helpers/FormHelper.html

http://apidock.com/rails/ActionView/Helpers/FormHelper/fields_for

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