Vorrei aggiungere un paio di variabili di istanza al mio controller, poiché le variabili in questione sono richieste all'interno di più di una vista di un'azione. Tuttavia, l'esempio seguente non funziona come mi aspetterei.Perché le variabili di istanza del mio controller non funzionano nelle viste (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
Come ho capito, Rails prende le variabili di istanza dal controller e le rende disponibili nella vista. Se assegno le stesse variabili all'interno dei metodi di azione, funziona bene - ma non voglio farlo due volte. Perché la mia strada non funziona?
(Nota: questo è un po 'di un esempio di spazzatura, ma spero che abbia senso)
EDIT: ho trovato la risposta a questa domanda qui: When do Ruby instance variables get set?
EDIT 2: quando è il momento migliore per utilizzare filtri come before_filter e il metodo di inizializzazione?
Sì, grazie. Tuttavia, poco dopo aver postato questo ho trovato un'altra risposta (ho aggiornato la domanda per riflettere questo). Quando è il momento migliore per utilizzare before_filter e/o inizializzare? –
Direi che dovresti usare un before_filter se è un lavoro di set-up che deve lavorare su più azioni. – theIV
Come esempio del commento che ho appena lasciato, quando si verifica che qualcuno è loggato, in genere si può avere un metodo in 'ApplicationController' e si applica un' before_filter' a qualsiasi azione che richieda l'accesso dell'utente. Non sarebbe ha senso avere quel codice in ogni azione che richiede l'accesso di qualcuno. – theIV