2010-06-05 7 views
24

Esta debería ser una pregunta de raíles muy simple. Tengo una variable como la siguiente.Raíles Variable en todas las acciones del controlador

@administration = Administration.first 

Quiero esta variable para que sea accesible a través de cada acción del controlador a través de todos mis controladores así que por ejemplo si tengo un controlador del producto y dentro de ella tengo las acciones CRUD habituales, quiero que la variable @administration como se define más arriba para incluir en todas las acciones de CRUD. (No sería necesario en destruir o crear o actualizar). Tengo muchos controladores a través de mi proyecto y me preguntaba si hay una manera más fácil de añadir de forma manual a través de todas las acciones que yo quiero en.

que intentaron una variable global

$administration = Administration.first 

pero se topa con un problema donde no se actualiza cuando actualizo el contenido real de la tabla Administration.first. Además, me gustaría evitar las variables globales.

Cualquier ayuda sería muy apreciada. ¡Gracias! :)

Respuesta

65

Puede agregar un before_filter a su ApplicationController que establece la variable de administración antes de llamar a cualquier acción y puede limitarlo solo a las acciones que requiera.

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

impresionantes, gracias por ayudar. – AustinT

+0

¿Tiene que ser una variable @instance, para compartir entre acciones? – Qasim

15

Sólo extendiéndose después Christos ...

Si no desea @administration sea accesible para destruir, crear y acciones del controlador de actualización a continuación, añadir: a excepción =>: la acción a before_filter así:

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

en Los Carriles 4 y 5 before_filter está obsoleto. Se puede utilizar en su lugar:

before_action: set_admin, excepto: [: crear,: actualización,: destruir]

Cuestiones relacionadas