Ich habe den folgenden sehr hässlichen Ruby-Code in einer Rails-App, an der ich gerade arbeite:
%Vor%Ich möchte nur fragen, ob params [: search] [: tags_name_in] definiert wurde, aber weil params und params [: search] und params [: search] [: tags_name_in] alle null sein können , wenn ich benutze ...
%Vor%... Ich bekomme einen Fehler, wenn es keine Parameter oder keine Suchparameter gibt.
Sicherlich muss es einen besseren Weg geben, dies zu tun ... Vorschläge?
Params wird immer definiert sein, so dass Sie das entfernen können.
Um die Menge an Code zu reduzieren, können Sie
verwenden %Vor% Wenn params[:search]
nicht definiert ist, wird die Bedingung kurzgeschlossen und gibt nil
zurück.
Sie haben viele Möglichkeiten, die den Wert von params[:search][:tags_name_in]
oder nil
zurückgeben, wenn params[:search]
ist nil
.
Klar aber lang:
%Vor% Verwendung von try
(von active_support
):
Verwenden von Rettung:
%Vor% Verwenden von fetch
:
Beachten Sie, dass fetch
manchmal verwendet werden kann, um if
insgesamt zu vermeiden, insbesondere wenn nichts zu tun ist, wenn der Parameter nicht angegeben ist:
Haha, wenn du schrecklich sein willst und monkeyypatch nil:
%Vor%Ich würde einen Kurzschluss empfehlen, wenn auch wie die anderen Antworten vorschlagen.
Tags und Links ruby ruby-on-rails hash if-statement null