Как создать две записи с двумя моделями через один контроллер (многошаговая форма) - PullRequest
0 голосов
/ 25 апреля 2019

Я создаю многошаговую форму. Однако из представленной формы сначала будет создан Арендатор, Обновить Арендатора с Выбранной Единицей, затем Создать Аренд.

Я пытался с Wicked, но не смог, потому что все их материалы для "существующей записи" просто обновить атрибуты на различных этапах.

Я прибег к своему отдельному контроллеру, а затем последовательно обновляюсь. Из приведенного ниже кода: Как извлечь / использовать параметры из вложенных полей (Есть 2-3 уровня полей) и «Создать» новые записи.


class MoveInFlowsController < ApplicationController

  def new
    @tenant = Tenant.new
    @address = Address.new
    @unit = Unit.find(@app.unit_id)

    @lease = Lease.new
    @lease_move_in_charges = LeaseMoveInCharge.new
    @lease_charges = LeaseCharge.new
  end

  def create

    @tenant = Tenant.new(tenant_params)

##########################
# THIS IS THE PART I NEED HELP
############################

    @lease = Lease.new(tenant_params[:lease_attributes])

# I NEED TO GET THE PARAMS FROM NESTED PARAMS BELOW.


    if @tenant.save
      @lease.tenant_id = @tenant.id
      @lease.unit_id = @tenant.unit_id

      if @lease.save
        flash[:notice] = "Your move-in process completed successfully."

           redirect_to(lease_path(:id => @lease.id))
      else
           render('new')
      end
    else
       render('new')
    end

  end


  private

  def tenant_params

    params.require(:tenant).permit(:first_name, :middle_ini, :last_name,
      :mobile_phone, :work_phone, :home_phone, :email_address, :social_security,
      :tenant_dob, :tenant_dl, :move_in_date, :send_rent_reminders, :primary_tenant,
      :tenant_type, :emergency_contact_name, :emergency_contact_phone, :status, :unit_id, :property_id,
      :co_tenant_first_name, :co_tenant_middle_ini, :co_tenant_last_name, :co_tenant_social_security,
      :co_tenant_dob, :co_tenant_dl, :have_pets,
      :rental_application_id, :unit_id,
    address_attributes: [:address1, :address2, :city, :state, :zipcode, :_destroy],
  notes_attributes: [:comment, :user_id],
  lease_attributes:[:move_in_date,
      :start_date,
      :month_to_month,
      :end_date,
      :rent_due_day,
      :grace_period,
      :unit_id,
      :tenant_id,
      :base_late_fee,
      :daily_late_fee,
      :status,
      lease_files: [],
      lease_move_in_charges_attributes: [:amount, :gl_account,
          :description, :_destroy],
      lease_charges_attributes: [:amount, :gl_account,
          :description, :_destroy]])
  end
end

1 Ответ

0 голосов
/ 25 апреля 2019

Мне нужно было исправить мои параметры следующим образом: leases_attributes, а не lease_attributes, потому что модель была установлена ​​с помощью has_many с принимаемыми вложенными атрибутами.

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