Я хочу обновить несколько моделей с одной формой в рельсах. Я посмотрел на Railscasts # 196 и многие примеры вложенных моделей, но не могу заставить их работать. Разница в том, что я хочу создать запись в родительской модели в форме для дочерней модели.
У меня есть 3 модели:
Модель пользователя
has_many: продукты
has_many: магазины
Модель продукта
принадлежат: пользователю
принадлежат: магазин
accepts_nested_attributes_for: store
Модель магазина
has_many: продукты
У меня есть форма, в которую пользователь может ввести товар. Я хочу, чтобы у него было поле, в которое он также мог бы войти в магазин. Эта запись создаст запись в модели магазина, а также модель продукта с идентификатором store_id, сохраненным в модели магазина.
Форма
<%= form_for @product, :html => { :multipart => true } do |f| %>
<%= f.text_field :product_name %>
<% f.fields_for :store do |store|%>
<%= store.text_area :store_name %>
<%end%>
<% end %>
Контроллер
@product = Product.new
@product.store.build
Этот код приводит к следующей ошибке:
неопределенный метод `build 'для nil: NilClass
Я просто хочу иметь возможность создать новую запись в магазине, когда они входят в продукт. (если это дублирующая запись, я не позволю, но я буду обрабатывать это в другом месте). Есть предложения?