gpt4 book ai didi

javascript - 如何将现有产品作为 Rails 中的嵌套属性添加到发票中?

转载 作者:行者123 更新时间:2023-11-29 13:41:42 24 4
gpt4 key购买 nike

我已经阅读了 Rails 中的嵌套属性,到目前为止,我发现 gems cocoon 满足我对嵌套属性分发表单的需求,并且到目前为止可以完成所有实现。但我想尝试通过使用 Cocoon 搜索产品数据,将现有数据产品作为嵌套属性添加到发票表格中。我应该怎么做才能在 Rails 中完成这些表单交互?

像这张图我猜的例子: image

更新

发票.rb

class Invoice < ApplicationRecord
has_many :products, inverse_of: :invoice
accepts_nested_attributes_for :ticket_details, reject_if: :all_blank, allow_destroy: true
end

产品.rb

class Product < ApplicationRecord
belongs_to :category
belongs_to :tax
belongs_to :invoice
end

最佳答案

使用nested attributes您需要对模型、 View 和 Controller 进行更改:

模型:您的模型需要指定accepts_nested_attributes_for(在您的情况下更改产品的 ticket_details)

class Invoice < ApplicationRecord
has_many :products, inverse_of: :invoice
accepts_nested_attributes_for :products, reject_if: :all_blank, allow_destroy: true
end

查看:使用fields_for生成您的 products_attributes 参数

<%= form_for @invoice do |form| %>

<div class="field">
<%= form.label :name %>
<%= form.text_field :name, id: :user_name %>
</div>

<%= form.fields_for :products, @invoice.products do |product| %>
<%= product.text_field :name %>
<% end %>

<div class="actions">
<%= form.submit %>
</div>
<% end %>

Controller :允许参数products_attributes

def invoice_params
params.require(:invoice).permit(:name, products_attributes: [:name, :id])
end

关于javascript - 如何将现有产品作为 Rails 中的嵌套属性添加到发票中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54390104/

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