В моем приложении на Rails 6 есть модель корректировки инвентаря, которая заполняет раскрывающийся список для выбора товаров для инвентаризации. Проблема в том, что я хочу убедиться, что дубликаты продуктов не выбраны, чтобы избежать ошибок инвентаря. Каждый продукт выбирается с помощью раскрывающегося списка, который генерируется с помощью вызова JSON в контроллере:
# Inventory_Adjustment_Batches_Controller.rb
def json_dropdown_products
@pagy_products, @products = pagy_countless(Product.ransack(model_number_or_supplier_part_number_or_description_cont: params[:term]).result(distinct: true), overflow: :empty_page)
end
# json_dropdown_products.json.jbuilder
json.items do
json.array!(@products) do |p|
json.preferred_sku p.preferred_sku
json.description p.description
json.quantity_on_hand p.quantity_on_hand
json.id p.id
end
end
Для каждого генерируемого раскрывающегося списка он вызывает json через этот select2 javascript:
$('.productSearch').select2({
selectOnClose: true,
allowClear: true,
placeholder: "Select Product...",
ajax: {
url: "/json_dropdown_products.json",
dataType: "json",
type: "GET",
processResults: function (data, params) {
params.page = data.page || 1;
return {
results: $.map(data.items, function (item) {
return {
text: item.preferred_sku + " - " + item.description,
id: item.id,
quantity_on_hand: item.quantity_on_hand
};
}),
pagination: {
more: data.current_page
}
};
},
cache: true
},
templateSelection: function(container) {
$(container.element).attr("data-quantity", container.quantity_on_hand);
return container.text;
}
});
Есть ли способ динамического отключения массива идентификаторов продукта в ответе json при создании новых записей продукта?