Ver Mensaje Individual
  #2 (permalink)  
Antiguo 19/10/2006, 00:55
Epaminondas Pantulis
 
Fecha de Ingreso: enero-2006
Mensajes: 48
Antigüedad: 18 años, 3 meses
Puntos: 0
El error es ese: @empresas está vacío porque en el controlador la acción edit sólo carga @empresa. Lo que viene a sugerir que edit se debe invocar mediante una URL del tipo .../edit/XX siendo XX la empresa.

Entonces, ¿cuál es el problema?

Pues que cuando vas a pintar la vista resultante d ela acción edit, Rails tiene que pintar todo el layout. Lo que implica (por el render :partial ) que va a pintar _menu.rhtml, y éste espera que exista todo el array de empresas, que el controlador no ha inicializado.

Las modificaciones que has hecho al layout de tu aplicación requieren que cada acción del controlador extraiga el array de empresas para poder pintar sus elementos en el menu.

Así que un primer paso es poner @empresas = Empresa.find(:all) en la acción edit de tu controlador y debería funcionar.

Y además esto deberías hacerlo en todas las acciones de tu aplicación, claramente violando el principio de no repetición (DRY). La solución sería meter un before_filter en tu controlador, alg odela guisa de

Código:
class ... < ActionController:Base

before_filter :rellena_empresas

def edit ...
end

def show ...
end

private 

def rellena_empresas
    @empresas = Empresa.find(:all)
end
De esta manera el código de rellena_empresas se ejecuta antes de la invocación de cada acción de tu controlador.
__________________
------------------------------
http://www.sobrerailes.com

Última edición por Epaminondas Pantulis; 19/10/2006 a las 01:42