2010-06-05 8 views
24

Questa dovrebbe essere una domanda di guide molto semplice. Ho una variabile come la seguente.Rails Variabile su tutte le azioni del controller

@administration = Administration.first 

Voglio questa variabile per essere accessibili attraverso ogni azione di controllo in tutti i miei regolatori così per esempio se ho un regolatore di prodotto e all'interno di esso ho le solite azioni CRUD, voglio la variabile @administration come definito sopra per essere inserito in tutte le azioni CRUD. (Non sarebbe necessario distruggere o creare o aggiornare). Ho molti controllori di tutto il mio progetto e mi chiedevo se esiste un modo più semplice che aggiungere manualmente attraverso tutte le azioni che voglio in.

ho provato una variabile globale

$administration = Administration.first 

ma io incorrere in un problema in cui non viene aggiornato quando aggiorno il contenuto effettivo della tabella Administration.first. Inoltre, vorrei evitare le variabili globali.

Qualsiasi aiuto sarebbe molto apprezzato. Grazie! :)

risposta

65

È possibile aggiungere un before_filter al proprio ApplicationController che imposta la variabile di amministrazione prima che venga chiamata qualsiasi azione e si può limitare solo alle azioni necessarie.

class ApplicationController < ActionController::Base 
... 
before_filter :set_admin 
def set_admin 
    @administration = Administration.first 
end 
.. 

http://api.rubyonrails.org/v2.3.8/classes/ActionController/Filters/ClassMethods.html

+0

impressionanti, grazie per l'aiuto. – AustinT

+0

Deve essere una variabile @instance, da condividere tra le azioni? – Qasim

15

Basta estendere messaggio Christos ...

Se non si desidera @administration sia accessibile per distruggere, creare e azioni di controllo degli aggiornamenti quindi aggiungere: ad eccezione =>: azione a before_filter in questo modo:

before_filter :set_admin, :except => [:create, :update, :destroy]

sui binari 4 e 5 before_filter è deprecato. È possibile utilizzare questo invece:

before_action: set_admin, ad eccezione di: [: creare,: aggiornamento,: distruggere]

Problemi correlati