2016-05-15 10 views
0

Ich habe ein Formular in Schienen mit Eingabewerten und 1 der Werte ist eine Werteliste und ein zweites Eingabefeld ist auch eine Werteliste, aber hängt von der Eingabe der anderen Feld. Der Eingabewert des ersten Feldes wird nicht zwischengespeichert. Also muss ich diesen Feldwert verwenden, bevor er gespeichert wird. So, das Beispiel: Ich wähle ein Unternehmen aus der Liste der Werte aller Unternehmen für den Feldlieferant, das zweite Feld supplier_address wird ein LOV mit allen Adressen dieser Firma, so dass die LOV des zweiten Feldes abhängig ist der im ersten Feld gewählte Wert, Firma.Schienen verwenden Formulareingabewert vor dem Speichern

Was ich versucht:

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 

aber ich bekomme immer noch den Fehler:

param is missing or the value is empty: purchase_requisition

Kann jemand mir bitte helfen? Danke !!!

Antwort

1

Der Fehler, auf den Sie stoßen, wird nicht durch den von Ihnen bereitgestellten Code verursacht. Sie verwenden wahrscheinlich starke Parameter und haben eine Methode wie folgt:

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

Das Problem ist, dass params[:purchase_requisition] existiert nicht. Wahrscheinlich, weil die form_for in Ihrer Sicht nicht ein purchase_requisition Objekt referenziert. Versuchen Sie, as: zu Ihrem form_for Ihre params unter diesem param Schlüssel zu senden:

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

Andernfalls werden Sie mehr Details über Ihre Ansicht und Controller schreiben müssen, um das Problem zu isolieren Sie haben.

Auch Code in Ihrem Controller Sie wollen:

PurchaseRequisition.new(purchase_requisition_params[:supplier_id]) 

Statt:

PurchaseRequisition.new.purchase_requisition_params[:supplier_id] 
0

Ich bin neu auf Schienen so noch eine Menge Fehler machen ... Wo finde ich setzen this:

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

Können Sie mir mehr im Detail sagen, was genau wo zu setzen?

+0

wie senden Ihnen die Werte? Welche Parameter haben Sie in Ihrem Objekt "purchase_requisition"? Um Attribute zuzulassen, können Sie wie folgt vorgehen: params.require (: purchase_requisition) .permit (: name,: age,: params_c) Wenn Sie name, age und param_c als Parameter haben –

+0

das sind meine Parameter: (aber wie Schicken Sie die Werte? Ich weiß nicht? Ich verstehe diese Frage nicht! (Entschuldigung !! Ich bin neu bei Ruby): id,: org_id,: dokumenttyp,: nummer,: lieferanten_id,: lieferantenadresse,: partner_id, : project_id,: construction_site_id,: purchase_order_date,: expected_receiving_date,: provided_receiving_date,: supplier_order_number,: supplier_shipping_number,: supplier_invoice_number,: currency,: status – RORStarter

+0

Vielleicht war alles korrekt, aber ich bin mir nicht sicher, wo ich das alles hinstellen soll ... – RORStarter

0

Gesetzt, alle Ihre Parameter gehören zum selben Objekt (es gibt keine verschachtelten Attribut), kann das sein, was Sie suchen:

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