Also, ich habe ein Programm, an dem ich schon seit einiger Zeit arbeite, das ist nur ein einfaches Barcode-Scansystem.Übergeben einer Rails-Variablen in eine Controller-Methode
Mein Controller für ein Raw gut ist wie folgt:
class RawsController < ApplicationController
def new
@raw = Raw.new
end
def create
@raw = Raw.new(params[raw_params])
if @raw.save
receive(@raw)
redirect_to new_raw_path
end
end
def receive(raw)
scanned = Raw.find_by(code: raw.code)
if scanned.quantity.nil?
flash[:danger] = "no match"
else
scanned.quantity += 1
if scanned.save
respond_to do |format|
format.html {}
format.json{}
end
end
end
end
private
def raw_params
params.require(:raw).permit(:code, :product, :quantity)
end
end
Nun, was ich geschehen soll, das heißt, wenn jemand eine Barcode-Nummer in ein Formular eingibt, es @raw als Instanz der schafft Roh (für Rohwaren) Klasse. Dann sucht es in der Empfangsfunktion nach einem passenden Produkt in meinem Inventar und fügt dann eine Einheit zu meinem Rohwarenbestand hinzu.
Wie auch immer ich einmal auf die scanned.quantity += 1
Linie komme, bekomme ich immer einen Fehler, dass diese Methode für nil Klasse undefiniert ist.
Ich habe in der scanned.quantity.nil?
Zeile hinzugefügt, und ich bekomme diese Flash-Nachricht, damit ich weiß, das Problem hat mit der Menge zu tun, die Null ist. Aber ich bin mir nicht sicher, wie ich das beheben soll.
Irgendwelche Hilfe?
Wie kommen Sie in dem Fall zu erhalten, dass 'scanned' Null ist? –
Es ist nicht so, dass die "Menge" ist "Null", aber die "gescannt" ist "Null". Damit Sie die Fehlermeldung besser verstehen, ist 'quantity' die Methode, auf die Sie von' scanned' zugreifen möchten, was gleich 'nil' ist. – sjagr