Ich weiß nicht, wann alle Ihre Variablen verfügbar werden, aber wenn ich im Controller Kontrollen machen möchte, verwende ich normalerweise die Callbacks von vorher_filter, um das zu tun. Zum Beispiel:
class YourController
before_filter :check_if_variables_exist
def show
#prepare for render view
end
private
def check_if_variables_exist
unless @your_variable.nil?
#Do what you want
render :nothing => true
end
end
Was das bedeutet ist, dass, wenn eine Anfrage in YourController zum Handeln Show kommt, wird es zuerst die private Methode check_if_variables_exist nennen. Wenn @your_variable null ist, wird es bei render enden: nothing => true und die filter_chain wird angehalten und die action show wird nie aufgerufen. Wenn jedoch Ihre_Variable nicht null ist, endet die Methode ohne etwas zu tun und der Controller ruft dann wie üblich die Aktionsshow auf.
So können alle Dinge, die Sie im Voraus überprüfen möchten, in verschiedenen vor_filter Callbacks platziert werden. Und wenn Sie nicht für alle Aktionen im Controller die überprüfen mögen, kann es wie folgt angegeben werden:
class YourController
before_filter :first_check, :only => [:index, :show]
before_filter :second_check, :only => [:show, :edit]
Meiner Meinung nach ist dies der „Schienen“ Weg ist, es zu tun.
@Alex Render ist nicht dasselbe wie Rückgabe und beendet die aktuelle Methode nicht. –