Params проблемы - PullRequest
0 голосов
/ 06 января 2019

Я делаю свой первый веб-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 %>

Я весь день готовил решение, но ничего.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...