Wie um zu überprüfen, ob ein Objekt null ist, in einer Ansicht in Ruby?
Ich möchte, um eine Linie von text nur, wenn es ein Objekt namens @foo gesetzt ist.
Meiner Ansicht nach, ich versuche, so etwas wie dieses:
<% if !@foo.new_record? || !@foo.nil? %>
Foo is not a new record or nil
<% end %>
Aber dies schlägt fehl You have a nil object when you didn't expect it!
Ich bin mir ziemlich sicher, dass dies geschieht, weil der new_record?
Methode.
Wie kann ich überprüfen, ob etwas nicht in einen neuen Datensatz oder null, ohne dass eine Fehlermeldung?
In PHP, es würde erreicht werden, indem Fragen if(!empty($foo))
aber auch die empty?
Methode in den Schienen bewirkt, dass die gleichen Fehler zurück.
Irgendwelche Ideen?
InformationsquelleAutor Yuval Karmi | 2010-02-27
Du musst angemeldet sein, um einen Kommentar abzugeben.
Wie etwa:
First off, Sie brauchen, um mit-UND Logik-eher-als-ODER-Logik hier, da alle ActiveRecord-Objekt erfüllt mindestens eine der Anforderungen von "nicht-null" oder "kein neuer Datensatz".
Zweite, die überprüfung auf nil zuerst sicher, dass die zweite Prüfung nicht ausgeführt, wenn die erste fehlschlägt. Der Fehler wird ausgelöst, weil Sie nicht verwenden können
#new_record?
auf ein Objekt, das unterstützt es nicht, so überprüfen nil zuerst sicher, dass die Methode nie auf null.Das könnte man auch ziemlich leicht nach oben mit DeMorgan ' s Gesetz:
unless @foo.nil? || @foo.new_record?; puts 'Hello!'; end;
!foo.nil?
macht mein Gehirn zu entlüften, denn es kann einfach ersetzt werden durchfoo
. Dass das eine sehr einfache und allgemein verbreitete idiom:if @foo && [email protected]_record?
InformationsquelleAutor Matchu
Könnten Sie daran interessiert sein, diese auch zu:
oder
InformationsquelleAutor Gordon Isnor
Lassen Sie mich werfen ein anderes beantworten, nur so zum Spaß.
InformationsquelleAutor Harish Shetty
Ich würde prüfen, ob durch
if @foo && @foo.id
. Dieser prüft, dass es eine @foo activerecord-Objekts und stellt sicher, dass dieid
Feld ist nicht leer. Wenn dieid
Feld leer ist, das heißt, es ist nicht ein Datensatz in der Datenbank noch. Ich nehme an, Sie sind mitid
Feld in der Tabelle.InformationsquelleAutor Jim
Der einfache Weg ist
InformationsquelleAutor allenwei
Gibt es einen Grund, warum dieses Objekt vielleicht null, wenn es um die Aussicht? Manchmal hinzufügen von bedingter Logik, wie dies in der Ansicht kann ein Zeichen sein, es könnte etwas umgestaltet werden, und Sie sind nur Maskierung ein größeres problem.
InformationsquelleAutor Peter Brown
Ich viel lieber mit den andand gem für diese Prüfungen.
Den Anruf an .id wird nur auf nicht-null-Objekte.
InformationsquelleAutor wesgarrison