条形码输入 Rails
Barcode input Rails
当我打开销售(新)表单时,它有一个用于条形码扫描器的输入字段和一个用于将产品项目添加到此次销售的按钮。据我了解,如果我连接条形码扫描仪并专注于输入字段,它应该会自动输入条形码的读数。
现在我有了这些读数(希望如此),一旦按下 add 按钮,我真的不知道该怎么做。我知道我需要搜索数据库并找到具有相同条形码的项目。但让我感到困惑的是我的销售(新)尚未保存因此我无法将此项目添加到 SaleItem
模型,因为我不知道当前销售的 ID。
对于这种情况,Rails 有 accepts_nested_attributes_for
和 fields_for
:
# model
class Sale < ApplicationRecord
has_many :sale_items
accepts_nested_attributes_for :sale_items
end
但您还必须编写客户端代码来修改您的表单(有一个 gem - nested_form
,但它有点过时了),因此它以 sale[sale_items_attributes][1][barcode]=12345
、sale[sale_items_attributes][2][barcode]=4321
的形式发布数据,并修改控制器以通过强参数 (params.require(:sale).permit(... , sale_items_attributes:[:id, :barcode])
) 允许这些数据。
技巧是 rails 会将嵌套模型与父模型一起保存,如果任何模型的验证未通过,也不会保存任何内容。
当我打开销售(新)表单时,它有一个用于条形码扫描器的输入字段和一个用于将产品项目添加到此次销售的按钮。据我了解,如果我连接条形码扫描仪并专注于输入字段,它应该会自动输入条形码的读数。
现在我有了这些读数(希望如此),一旦按下 add 按钮,我真的不知道该怎么做。我知道我需要搜索数据库并找到具有相同条形码的项目。但让我感到困惑的是我的销售(新)尚未保存因此我无法将此项目添加到 SaleItem
模型,因为我不知道当前销售的 ID。
Rails 有 accepts_nested_attributes_for
和 fields_for
:
# model
class Sale < ApplicationRecord
has_many :sale_items
accepts_nested_attributes_for :sale_items
end
但您还必须编写客户端代码来修改您的表单(有一个 gem - nested_form
,但它有点过时了),因此它以 sale[sale_items_attributes][1][barcode]=12345
、sale[sale_items_attributes][2][barcode]=4321
的形式发布数据,并修改控制器以通过强参数 (params.require(:sale).permit(... , sale_items_attributes:[:id, :barcode])
) 允许这些数据。
技巧是 rails 会将嵌套模型与父模型一起保存,如果任何模型的验证未通过,也不会保存任何内容。