Ich möchte meinem Controller einige Instanzvariablen hinzufügen, da die betreffenden Variablen in der Ansicht mehrerer Aktionen benötigt werden. Das folgende Beispiel funktioniert jedoch nicht wie erwartet.Warum funktionieren die Instanzvariablen meines Controllers nicht in Sichten? (Rails)
class ExampleController < ApplicationController
@var1 = "Cheese"
@var2 = "Tomato"
def show_pizza_topping
# What I want is the above instance vars from within the view here
end
def show_sandwich_filling
# What I want is the above instance vars from within the view here
end
end
Wie ich es verstehe, nimmt Rails die Instanzvariablen vom Controller und stellt sie in der Ansicht zur Verfügung. Wenn ich die gleichen Variablen innerhalb der Aktionsmethoden zuweisen, funktioniert es gut - aber ich möchte es nicht zweimal machen. Warum funktioniert mein Weg nicht?
(Hinweis: Dies ist ein bisschen wie ein Müll Beispiel ist, aber ich hoffe, dass es Sinn macht)
EDIT: When do Ruby instance variables get set?
EDIT 2:: Ich habe die Antwort auf diese Frage hier gefunden haben, wenn ist die beste Zeit, um Filter wie before_filter und die Initialize-Methode zu verwenden?
Ja es tut, danke. Aber kurz nachdem ich dies gepostet habe, habe ich eine andere Antwort gefunden (ich habe die Frage aktualisiert, um das zu reflektieren). Wann ist die beste Zeit, um before_filter zu verwenden und/oder zu initialisieren? –
Ich würde sagen, dass Sie ein before_filter verwenden sollten, wenn es irgendeine Art von Einrichtungsarbeit ist, die an mehreren Aktionen arbeiten muss. – theIV
Als Beispiel für den Kommentar, den ich gerade hinterlassen habe, haben Sie bei der Überprüfung, dass jemand eingeloggt ist, in der Regel eine Methode in 'ApplicationController' und wenden eine' before_filter' auf alle Aktionen an, bei denen der Benutzer angemeldet sein muss Sinn machen, diesen Code in jeder Aktion zu haben, die jemanden erfordert, der eingeloggt sein muss. – theIV