Chciałbym dodać kilka zmiennych instancji do kontrolera, ponieważ wymagane zmienne są wymagane z więcej niż jednego widoku akcji. Jednak poniższy przykład nie działa tak, jak bym się spodziewał.Dlaczego zmienne instancji mojego kontrolera nie działają w widokach (Railsy)
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
Jak rozumiem, Railsy pobierają zmienne instancji z kontrolera i udostępniają je w widoku. Jeśli przypiszesz te same zmienne w metodach działania, działa dobrze - ale nie chcę tego robić dwa razy. Dlaczego mój sposób nie działa?
(Uwaga: to jest trochę śmieci przykład, ale mam nadzieję, że to ma sens)
EDIT: Znalazłem odpowiedź na to pytanie tutaj: When do Ruby instance variables get set?
EDIT 2: gdy jest najlepszy czas na użycie filtrów takich jak before_filter i metoda initialize?
Tak, dziękuję. Jednak wkrótce po wysłaniu tego znalazłem kolejną odpowiedź (zaktualizowałem pytanie, aby to odzwierciedlić). Kiedy najlepiej wykorzystać filtr before_filter i/lub zainicjować? –
Powiedziałbym, że powinieneś użyć filtru before_filter, jeśli jest to jakakolwiek konfiguracja, która musi działać na wielu akcjach. – theIV
Jako przykład komentarza, który właśnie opuściłem, podczas sprawdzania, czy ktoś jest zalogowany, zazwyczaj można użyć metody w aplikacji "ApplicationController" i zastosować 'before_filter' do każdej czynności wymagającej zalogowania użytkownika. ma sens posiadanie tego kodu w każdym działaniu wymagającym zalogowania się. – theIV