Ich habe eine Aktion in meinem Controller, mit der ich Probleme habe. Dies ist meine erste Rails-App, daher bin ich mir der Best Practices für Rails nicht sicher.
Ich habe ein Modell namens Gruppe und ein paar Aktionen, die in den Controller gehen. Ich habe einen Test geschrieben, der dazu führen sollte, dass der Controller aufgrund einer ungültigen Gruppen-ID einen Fehler in JSON rendert. Anstatt zu rendern und zu beenden, sieht es so aus, als würde der Controller rendern und weiter ausführen.
Test
%Vor%Controller-Aktion
%Vor% Im Controller wird die erste if-Anweisung ausgeführt: render :json => { :message => "group_id not found" }
aber @group.destroy
wird noch ausgeführt. Das scheint mir nicht intuitiv zu sein, ich würde denken, dass die Rendermethode den Controller verlassen sollte.
Warum wird der Controller nicht beendet, nachdem render
aufgerufen wurde?
Der Zweck dieses Codeblocks besteht darin, ordnungsgemäß wiederherzustellen, wenn mit der übergebenen ID kein Datensatz gefunden werden kann. Ist das der richtige Weg, so etwas zu tun?
Fügen Sie einfach return;
nach render
hinzu, um den Methodenrumpf zu verlassen:)
Ich denke, render
ist nur ein Methodenaufruf, Sie nennen ihn, und die Methode wird auf den Stapel gelegt, der die Ausführungsreihenfolge der Methode enthält. Nachdem Sie render
beendet haben, kehren Sie zur Methode remove
zurück und führen die Ausführung der verbleibenden Methode fort. Sie können dieses Problem jedoch vermeiden, indem Sie die Methode remove
Tags und Links ruby-on-rails controller