ruby-on-rails - Rails 嵌套表单与 has_many :through
问题描述
我有 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]])
并且表格不显示:
解决方案
推荐阅读
- mysql - MySQL Union 返回不一致的结果
- dictionary - 将字典对的整数值递增的嵌套 for 循环转换为列表理解
- jquery - 如何将json数组更改为另一种格式
- ruby-on-rails - Rails 中的减法
- c# - 在 Windows 窗体上捕获 Enter 按键不起作用
- javascript - 如何获取在 Jquery 文档就绪功能中触发的复选框单击事件?
- python - pyside QPushButton setCheckable
- css - 自定义 Css 在 Wordpress 中的实时站点上不起作用
- html - HTML - 中心列表和底部的图标
- php - Odoo PHP API 和 Laradoo - 如何保存 many2many many2one 和选择字段