рельсы используют входное значение формы перед сохранением

У меня есть форма в рельсах с входными значениями, и 1 из значений - это LOV (список значений), а второе поле ввода также является LOV, но зависит от ввода другого поля. Вводимое значение первого поля не сохраняется между ними. Поэтому мне нужно использовать это значение поля до его сохранения. Итак, пример: я выбираю компанию из списка значений всех компаний для поля поставщик, второе поле supplier_address будет списком значений со всеми адресами этой компании, поэтому значение второго поля зависит от значения выбрано в первом поле, компании.

Что я пробовал:

  def new
    @purchase_requisition = PurchaseRequisition.new
    @purchase_requisition.number = find_next_user_value("Purchase_Requisition")
    #@purchase_requisition.supplier_address_id =  PurchaseRequisition.new.purchase_requisition_params[:supplier_id]
    @purchase_requisition = PurchaseRequisition.new(purchase_requisition_params)

    respond_to do |format|
      @purchase_requisition.supplier_address_id = PurchaseRequisition.new.purchase_requisition_params[:supplier_id]
    end
  end

но я все еще получаю сообщение об ошибке:

param отсутствует или значение пустое: Purchase_requisition

Кто-нибудь может мне помочь? Спасибо!!!


person RORStarter    schedule 15.05.2016    source источник


Ответы (2)


Ошибка, с которой вы столкнулись, не вызвана предоставленным вами кодом. Вы, вероятно, используете сильные параметры и имеете такой метод:

def purchase_requisition_params
   params.require(:purchase_requisition).permit(# some list of attributes #)
end

Проблема в том, что params[:purchase_requisition] не существует. Вероятно, потому что form_for в вашем представлении не ссылается на объект purchase_requisition. Попробуйте добавить as: к вашему form_for, чтобы отправить параметры под этим ключом параметров:

form_for @requisition, as: :purchase_requisition, ....

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

Кроме того, в вашем коде контроллера вы хотите:

PurchaseRequisition.new(purchase_requisition_params[:supplier_id])

Вместо:

PurchaseRequisition.new.purchase_requisition_params[:supplier_id]
person Anthony E    schedule 15.05.2016

Предположим, что все ваши параметры принадлежат одному и тому же объекту (нет вложенных атрибутов), это может быть то, что вы ищете:

  def purchase_requisition_params
    params.require(:purchase_requisition).permit(:org_id, :document_type, :number, :supplier_id, :supplier_address_id, :partner_id, :project_id, :construction_site_id, :purchase_order_date, :expected_receiving_date, :promised_receiving_date, :supplier_order_number, :supplier_shipping_number, :supplier_invoice_number, :currency, :status) ##you don't need id here
  end
person noman tayyab    schedule 17.05.2016