Неразрешенный параметр Rails:: mov_ingreso_attributes - PullRequest
0 голосов
/ 21 января 2020

Я пытаюсь создать вложенную форму с двумя типами движений: mov_principal и mov_egreso, из которых я пытаюсь сделать это через основное движение

это модели

mov_principal.rb

class MovPrincipal < ActiveRecord::Base
    self.table_name = 'mov_principal'


    has_one :mov_ingreso, :class_name => 'MovIngreso'

    accepts_nested_attributes_for :mov_ingreso

    belongs_to :tipo_concepto, :class_name => 'TipoConcepto', :foreign_key => :id_tipo
    belongs_to :banco
end

mov_ingreso

class MovIngreso < ActiveRecord::Base
    self.table_name = 'mov_ingreso'


    belongs_to :mov_principal , :class_name => 'MovPrincipal'
    accepts_nested_attributes_for :mov_principal, :allow_destroy => true
    has_many :puntos, :class_name => 'Punto'
end

контроллер mov_principal_controller.rb

class MovPrincipalsController < ApplicationController
  before_action :set_movprincipal, except: [:index,:new,:create]
  before_action :set_tipooper
  def index


    @mov_principals = MovPrincipal.all.order("referencia DESC")

  end

    def new

      @mov_principal = MovPrincipal.new
      if params[:tipooper] == '0'

        @mov_ingreso =  @mov_principal.build_mov_ingreso
      else
        # @gastos = Gasto.new
        # @mov_egresos = @mov_principal.build_mov_egresos
        @mov_egresos = @mov_principal.mov_egresos.build
        @gasto = @mov_egresos.build_gasto

      end

    end

  def create
    if @tipooper == '0'

         @mov_principal = current_user.mov_principals.new(movingreso_params)

      else
      @mov_principal = current_user.mov_principals.new(movgastos_params)

    end


    if @mov_principal.save

      render :show

    else
      render :new
    end

  end
  private
  def set_movprincipal
    @mov_principal = MovPrincipal.find(params[:id])
  end
  def set_tipooper
    @tipooper = params[:tipooper]

  end

  def movgastos_params
      params.require(:mov_principal).permit(:id,:referencia,:id_tipo,:banco_id,
                                            mov_egreso_attributes: [:id,:mov_principal_id,:haber, :gasto_id,
                                                                    gasto_attributes: [Gasto.attribute_names.map(&:to_sym).push(:_destroy)]] )
  end


  def movingreso_params


      params.require(:mov_principal).permit(:id,:referencia,:id_tipo,:banco_id,:user_id,:_destroy,
                                            mov_ingreso_attributes: [:id,:debe,:mov_principal_id,:_destroy ])

  end

end


И представление

_formingreso.html.erb

<%=form_for(@mov_principal, :html => {:class => 'form-horizontal'}) do |f|   %>
    <% @mov_principal.errors.full_messages.each do |message| %>
        <div class="be-red white top-space">
          * <%= message %>
        </div>
    <% end %>
    <div class="form-group row">
      <label class="col-sm-2 col-form-label">  <%= f.label :referencia, "N° Referencia" %> </label>
      <div class="col-sm-10">
        <%= f.text_field :referencia, class: 'form-control', placeholder: "N° DE REFERENCIA" %>
      </div>
    </div>
    <div class="form-group row" >
      <label class="col-sm-2 col-form-label">  <%= f.label :id_tipo, "Tipo" %> </label>
      <div class="col-sm-10">

        <%= f.collection_select(:id_tipo, TipoConcepto.where(:forma => "1"), :id, :tipo,{:prompt => "SELECCIONE EL TIPO DE INGRESO"}, {class: 'custom-select'}) %>

      </div>
    </div>

    <div class="form-group row" >
      <label class="col-sm-2 col-form-label">  <%= f.label :id_banco, "Banco" %> </label>
      <div class="col-sm-10">
        <%= f.collection_select(:banco_id, Banco.all, :id, :nombre,{:prompt =>"SELECCIONE EL BANCO"} ,{class: 'custom-select'} ) %>

      </div>
    </div>

    <div class="form-group row" >
      <%= f.fields_for :mov_ingreso_attributes do |ingreso| %>
          <label class="col-sm-2 col-form-label"> <%= ingreso.label :debe, "Monto" %> </label>
          <div class="col-sm-10">
            <%= ingreso.text_field :debe, class: 'form-control' , placeholder: "MONTO DE INGRESO" %>
          </div>
      <% end %>

Страница загружает меня, это сохраняет меня данные mov_principal, но не сохраняет меня данные mov_ingreso, и я обнаружил в консоли ошибку Unpermitted: бла-бла-бла У меня есть часы, которые я искал и искал на форумах, пытаясь найти решения, и даже читал в блоге об ошибке, которая имеет рельсы при обновлении версии, и мне пришлось создать инициализатор strong_parameter, я сделал это, и в любом случае ничего не показываю здесь, только в дело имеет какое-либо отношение

/ initializers / strong_parameter.rb

if Rails.env.test?
  ActionController::Parameters.action_on_unpermitted_parameters = :raise
end

Спасибо всем! !

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