Ich versuche, den Leitfaden für die teilweise Überprüfung des Objekts mit dem Zauberer-Juwel zu befolgen, aber ich erhalte weiterhin die Fehlermeldung undefined Methode 'include?' für nil: NilClass, kann nicht verstehen, was falsch ist, habe versucht, die Anweisungen Schritt für Schritt zu folgen.
Der Fehler im Protokoll zeigt.
%Vor%Hier ist mein Schritt-Controller.
%Vor%Property.rb
%Vor%Lassen Sie es mich wissen, wenn Sie weitere Teile zur Frage hinzufügen müssen. Vielen Dank im Voraus.
Aus meinen Kommentaren:
Das status
ist ein Attribut Ihres Property-Modells. Es kann nil
sein, was in bestimmten Fällen zu einem Fehler führt:
Es versucht tatsächlich, nil
mit 'tenants'
(String) zu vergleichen.
Um das zu beheben können Sie eine leere Zeichenfolge zum Vergleichen verwenden, wenn status
ist nil
,
in Ihrem Fall:
%Vor% nil.to_s
gibt eine leere Zeichenfolge zurück. Welches löst dein Problem;)
Tatsächlich werden oft die Methoden to_s
, to_i
, to_f
usw. verwendet, um die mögliche nil
zu entfernen:
Es gibt noch eine andere Lösung: Sie sollten bei der Objekterstellung einen Standardstatus festlegen, vorzugsweise bei der Migration.
%Vor% Danach haben Sie nie nil
für Ihren Status
In Ruby 2.3 können Sie den sicheren Navigationsoperator verwenden, der einfach null zurückgibt, wenn Ihr Objekt null ist und es wird keinen Fehler werfen.
%Vor%Tags und Links ruby-on-rails-3 ruby-on-rails validation formwizard