Ich bekomme ein verschachteltes Array von facebook via omniauth und möchte prüfen, ob es leer ist? / nil? / existiert? Die abhängige Zeile sieht folgendermaßen aus:
%Vor%Dies sollte überprüfen, ob dieser Teil des Arrays leer ist oder existiert.
Aber immer wurde dieser Fehler geworfen:
%Vor%Überprüfe ich Arrays falsch?
Ich habe es mit "has_key" "nil?" "leer?" "existiert?" "leer?"
Aber keiner von diesen funktioniert!
Bitte helfen Sie mir, vielen Dank im Voraus!
Ein bisschen spät zur Party, aber, wie in diese Antwort gezeigt wurde, Ruby 2.3.0 führte eine neue Methode ein namens dig
, die nil
zurückgab, wenn eine von Die verketteten Schlüssel sind nil
. Ihr Omniauth-Auth-Hash könnte dann wie folgt dargestellt werden:
Dieser Fehler wird ausgelöst, weil einer der Hash-Werte in der Kette von omniauth['extra']['raw_info']['location']['name'].nil?
null zurückgibt und es nicht der letzte Aufruf ['name'] ist.
Wenn zum Beispiel omniauth['extra']['raw_info']
Nil zurückgibt, versuchen Sie tatsächlich, nil['location']
aufzurufen, was einen Fehler in Ruby verursacht.
Sie können diesen Fehler einfach abfangen:
%Vor%Bitte beachten Sie, dass der obige Codeblock die Variable res mit true füllen wird, wenn der Hash-Wert ['name'] null ist oder ein anderer Hash-Wert in der Kette den Wert nil zurückgibt.
Tags und Links ruby ruby-on-rails