Ich habe ein Problem festgestellt, warum meine Update-Methode nicht die erforderlichen Argumente erhalten. Ich habe einen ähnlichen Test für die Show und die Payloads funktionieren. In diesem Szenario ist die betreffende Route die Rechnung/Rechnungsnummer/Reise/ID. Wenn Sie mir helfen können, den Fehler zu finden und irgendwelche Vorschläge zu geben, wie man diese Art von Problem in Zukunft beheben kann, wäre das großartig.Falsche Anzahl von Argumenten (1 für 2) für Update-Methode
Dies ist die Aktualisierungsmethode.
def update
if @trip.update(@trip.trip_id, trip_params)
head :no_content
else
render json: [@invoice, @trip].errors, status: :unprocessable_entity
end
end
Mit den folgenden privaten Methoden.
private
def set_trip
@trip = Trip.where(:invoice_id => params[:invoice_id], :trip_id => params[:id])
end
def trip_params
params.require(:trip).permit(:trip_id, :depart_airport, :arrive_airport, :passenger_first_name, :passenger_last_name, :passenger_count, :departure_date, :merchant_id)
end
def load_invoice
@invoice = Invoice.find(params[:invoice_id])
end
end
Mein fehlgeschlagener Test sieht so aus.
test "should update trip" do
put :update, invoice_id: @invoice.invoice_id, id: @trip,
trip: {arrive_airport: @trip.arrive_airport,
depart_airport: @trip.depart_airport,
departure_date: @trip.departure_date,
passenger_count: @trip.passenger_count,
passenger_first_name: @trip.passenger_first_name,
passenger_last_name: @trip.passenger_last_name}
assert_response 204
end
Nur um zu überprüfen, ist der Fehler 2 für 1 oder 1 für 2? Machen Sie Spott/Stubbing der Datensätze, die von der Datenbank geladen werden? –