2016-06-09 16 views
2

Derzeit habe ich eine Controller-Methode, die 1 jedes Mal inkrementieren wird, wenn ein Benutzer dort Nummer in einem Ansichtsformular eingibt. Ich werde den Code und den Fehler zeigen, ich möchte nur sicherstellen, dass ich hier genug Hintergrundinformationen gebe. Also, ich habe ein anderes Formular, das ein subscriber erstellt dieses Modell nimmt Name und Telefonnummer, aber es hat auch ein Besuch Attribut, das ein Int-Datentyp ist. Also die Controller-Methode, die mir das Problem gibt, ist ihre Funktion, um 1 Besuch zum Abonnenten zu erhöhen, indem Sie die Nummer finden, die dem Subscriber beigefügt ist. Aber wenn der Benutzer ihre Telefonnummer eingibt, wird dieser Fehler undefinierte Methode `+ 'für nil: NilClass und ich wirklich und ratlos, wie man es beheben kann. Hier ist mein Code für Klarheit.undefined Methode `+ 'für Null: NilClass - Ruby

REGLER:

def visit 
    @subscriber = Subscriber.find_by_phone_number(params[:phone_number]) 
    if @subscriber 
    @subscriber.visit += 1 
    @subscriber.save 
    flash[:notice] = flash[:notice] = "Thank You #{@subscriber.first_name}. You have #{@subscriber.days_till_expired} until renewal" 
    redirect_to subscribers_search_path(:subscriber) 
    else 
    render "search" 
    end 
end 

ERROR:

enter image description here

Ich bin nicht sicher, was andere Code anwendbar wäre? lassen Sie mich wissen, wenn Sie weitere Informationen benötigen. Danke.

+0

Überprüfen Sie den Wert von '@ subscriber', insbesondere' @ subscriber.value'. Es ist wahrscheinlich "nil". Zeigen Sie dann den Code, der den '@ Abonnenten' erstellt, und überprüfen Sie Ihre Annahmen dazu, wie '@ subscriber.value 'initialisiert wird (wahrscheinlich ist dies nicht der Fall). – Amadan

Antwort

5

Das ist, weil @subscriber.visit Null ist, müssen Sie zuerst auf 0 setzen.

In Ihrer Migration können Sie es standardmäßig auf 0 setzen, wenn ein Abonnent erstellt wird, dann müssen Sie sich nicht darum kümmern.

t.integer :visit, default: 0

Oder vielleicht fügen Sie die Zeile @subscriber.visit ||= 0 vor @subscriber.visit += 1 (die es auf 0, wenn nil setzt).

Verwandte Themen