2016-05-15 5 views
0

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

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

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 is missing or the value is empty: purchase_requisition

Может кто-то пожалуйста, помогите мне? Спасибо !!!

ответ

1

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

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

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

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

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

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

PurchaseRequisition.new(purchase_requisition_params[:supplier_id]) 

Вместо:

PurchaseRequisition.new.purchase_requisition_params[:supplier_id] 
0

Я новичок на рельсах, так до сих пор делают много ошибок ... Куда я положил это:

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

Не могли бы вы рассказать мне, что именно поставить?

+0

как вы посылаете значение? Какие параметры у вас есть в объекте «purchase_requisition». Чтобы разрешить атрибуты, вы можете сделать так: params.require (: purchase_requisition) .permit (: name,: age,: params_c), если у вас есть имя, возраст и param_c по мере поступления ваших параметров –

+0

это мои параметры: (но как я не знаю этот вопрос! (Извините, я новичок в Ruby): id,: org_id,: document_type,: number,: поставщик_id,: поставщик_address_id,: partner_id, : project_id,: construction_site_id,: purchase_order_date,: expected_receiving_date,: expected_receiving_date,: поставщик_order_number,: поставщик_shipping_number,: поставщик_invoice_number,: currency,: status – RORStarter

+0

Возможно, все было правильно, но я не уверен, где разместить все это ... – RORStarter

0

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

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 
Смежные вопросы