Я делаю свой первый веб-API на Ruby on Rails (это пункт продажи). Мысль здесь Это делает 'n' продажи. Поэтому я использовал nested_form для этого, но когда я «подтверждаю» продажу, у меня возникает такая проблема:
ActionController::ParameterMissing in SalesController#create
param is missing or the value is empty: sale
private
def sale_params
params.require(:sale).permit(:fecha_venta, :id_usuario, carts_attributes: [:id ,:id_producto, :cantidad])
end
с сильными параметрами. Это контроллер для продажи
class SalesController < ApplicationController
def new
@venta = Sale.new
end
def create
@venta = Sale.new(sale_params)
@venta.id_usuario= current_user.id
@venta.fecha_venta = DateTime.now
if @venta.save
flash[:succes] = "Se ha realizado la venta"
redirect_to sales_index_path
else
flash[:danger] = "Ha ocurrido un error"
render new_sale_path
end
end
private
def sale_params
params.require(:sale).permit(:fecha_venta, :id_usuario, carts_attributes: [:id ,:id_producto, :cantidad])
end
end
Я использую nested_form в модели (и я уже установил гем "nested_form"). Вот продажа и модель корзины:
class Sale < ApplicationRecord
has_many :carts
accepts_nested_attributes_for :carts
end
class Cart < ApplicationRecord
belongs_to :sale
end
И, наконец, это частичная форма, которую я использую
<%= nested_form_for(@venta) do |f| %>
<div class="form-group col-md-12">
<label class="form-control">Vendedor: <%= current_user.nombre_trabajador%></label>
</div>
<%= f.fields_for :carts do |carro| %>
<form class="form-horizontal">
<div class="card-body">
<div class="form-row">
<div class="form-group col-md-5">
<%= carro.collection_select :id_producto, Product.select("products.nombre_producto, products.stock, products.id").where("products.stock > ?", 0), :id, :nombre_producto, {:include_blank => true}, {:class => 'form-control btn btn-secondary dropdown-toggle'} %>
</div>
<div class="form-group col-md-5">
<%= carro.text_field :cantidad, class: "form-control", type: 'number' %>
</div>
<div class="form-group col-md-2">
<%= carro.link_to_remove "Eliminar", :class=> 'btn btn-danger btn-sm' %>
</div>
</div>
</div>
</form>
<% end %>
<div class="row">
<div class="form-actions">
<%= f.link_to_add "Agregar Producto", :carts , :class=> 'btn btn-default btn-sm'%>
</div>
</div>
<br>
<div class="form-actions">
<%= f.submit "Enviar" , :class=> 'btn btn-primary'%>
<%= link_to 'Cancelar', sales_index_path ,:class=> 'btn btn-danger' %>
</div>
<% end %>
Я весь день готовил решение, но ничего.