gpt4 book ai didi

ruby-on-rails - 嵌套表单中的 collection_check_boxes 无法正确插入多对多连接表

转载 作者:行者123 更新时间:2023-12-04 05:38:04 24 4
gpt4 key购买 nike

我有嵌套表单,它们试图为每个复选框插入到 Categorization 模型中。结果,我没有收到任何错误,但是 Categorization 模型的属性之一没有插入到表中。这是选中 3 个复选框中的 2 个时散列的样子:"categorizations_attributes"=>{"0"=>{"clothing_size_id"=>["1", "2", ""]}}}

插入看起来像这样:SQL (0.4ms) INSERT INTO "categorizations"("created_at", "product_id", "updated_at") VALUES ($1, $2, $3) RETURNING "id"[["created_at”,2014 年 6 月 23 日星期一 17:44:45 UTC +00:00],[“product_id”,15],[“updated_at”,2014 年 6 月 23 日星期一 17:44:45 UTC +00:00]]

插入需要用 "clothing_size_id" 构造,我认为也是这样 ("created_at", "product_id", "updated_at", "clothing_size_id")

如何正确插入?

ClothingSize 模型中的服装尺码显示在 Product 表单上的复选框中。每个复选框应该在 Categorization 模型中占一行,每个复选框的 product_idclothing_size_id 都被选中。

模型

产品

has_many :categorizations, dependent: :destroy
has_many :clothing_sizes, through: :categorizations

accepts_nested_attributes_for :categorizations
accepts_nested_attributes_for :clothing_sizes

分类

belongs_to :product
belongs_to :clothing_size

accepts_nested_attributes_for :clothing_size

服装尺码

has_many :categorizations
has_many :products, through: :categorizations

accepts_nested_attributes_for :categorizations
accepts_nested_attributes_for :products

产品总监

def new
@product = Product.new
@product.categorizations.build
end

def product_params
params.require(:product).permit(:title, :description,
:image_url, :image_url2, :price, :quantity, :color,
:clothing_sizes_attributes => [:sizes, :clothing_size_id],
:categorizations_attributes => {:clothing_size_id => []})
end

_产品表格

<%= form_for(@product) do |f| %>
<%= f.fields_for :categorizations do |cat| %>
<div class="field">
<%= cat.collection_check_boxes :clothing_size_id, ClothingSize.all, :id, :sizes, {prompt: "Size"} %>
</div>
<% end %>
<%= f.submit 'Save Product'%>
<% end %>

最佳答案

我认为您想将服装尺码 ID 从分类中移除。

<%= form_for(@product) do |f| %>
<div class="field">
<%= f.collection_check_boxes :clothing_size_ids, ClothingSize.all, :id, :sizes { prompt: "Size" } %>
</div>
<% end %>

然后在你的 Controller 中:

def product_params
params.require(:product).permit(:title, :description,
:image_url, :image_url2, :price, :quantity, :color,
{ clothing_size_ids: [] })
end

最后,我认为您不需要为产品模型中的任一关联接受嵌套属性。

class Product < ActiveRecord::Base
has_many :categorizations, dependent: :destroy
has_many :clothing_sizes, through: :categorizations

# accepts_nested_attributes_for :categorizations
# accepts_nested_attributes_for :clothing_sizes
end

结束

尝试一下,让我知道它是否有效。

关于ruby-on-rails - 嵌套表单中的 collection_check_boxes 无法正确插入多对多连接表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24372674/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com