У меня есть 3 модели, модель продукта связана с моделью фирмы через модель product_categories.Я хочу создать форму, где я могу добавить продукт с их категорией, в форме фирмы.
Модель фирмы
class Firm < ApplicationRecord
has_many :product_categories
has_many :products, through: :product_categories
accepts_nested_attributes_for :product_categories
end
Модель продукта
class Product < ApplicationRecord
has_many :product_categories
has_many :firms, through: :product_categories
has_many :variants, class_name: 'ProductVariant'
end
Категория продукта
class ProductCategory < ApplicationRecord
belongs_to :product
belongs_to :firm
accepts_nested_attributes_for :product
end
Так выглядит моя форма создания для фирмы
<%= form_with(model: @firm, local: true) do |form| %>
firm.fields...
<%= form.fields_for :product_categories do |prod_c_f| %>
product_category.fields...
<%= prod_c_f.fields_for :product do |prod_f| %>
product.fields...
<% end %>
<% end %>
<%= form.submit "Create Firm", class: 'btn btn-primary
btn-block ' %>
<% end %>
А это мой контроллер
def create
@firm = Firm.new
@firm.product_categories.build.build_product
respond_to do |format|
if @firm.save
format.html { redirect_to firms_path, notice: '...' }
else
format.html { render :new }
end
end
end
Это параметры
params.require(:firm).permit(:title,
product_categories_attributes:[ product_attributes:
[:title, :price, :description]])
И форма не отображается: