Ich versuche, eine Website in zwei Abschnitte aufzuteilen. Eine, die das Anwendungslayout verwenden sollte und eine, die das Admin-Layout verwenden sollte. In meinem application.rb habe ich eine Funktion wie folgt:Ruby on Rails - Render-Layout
def admin_layout
if current_user.is_able_to('siteadmin')
render :layout => 'admin'
else
render :layout => 'application'
end
end
Und in den Controller, auf denen könnte es die eine oder andere sein habe ich
before_filter :admin_layout
Dies funktioniert für einige Seiten in Ordnung (wo seine nur Text) aber für andere bekomme ich den klassischen Fehler:
You have a nil object when you didn't expect it!
You might have expected an instance of Array.
The error occurred while evaluating nil.each
Hat jemand eine Idee von dem, was ich vermisse? Wie sollte ich Render und Layout richtig verwenden?
wenn logged_in redundant? und current_user.is_able_to ('siteadmin') als current_user kann Null sein, wenn nicht angemeldet! –
@Reuben, das ist ein guter Punkt; hinzugefügt. – molf
Ich habe andere Checks vor dieser Zeile zu überprüfen, ob ein Benutzer angemeldet ist. Das ist erstaunlich, obwohl ich nie darüber nachgedacht habe, eine Funktion nach dem Layout aufzurufen. So einfach und sehr hilfreich. Vielen Dank. – RyanJM