haber, estoy siguiendo el libro de rails way, y al intentar hacer el
ejemplo de multiple nested resources, con los controladores:
perfils_controller y clientes_controller y empleados controller que
heredan de el primero, con las siguientes rutas definidas:
map.resources :perfils
map.resources :empleados do
|empleado|
empleado.resources :perfils, :path_name=>"_empleado",
:controller=>:empleado_perfils
end
map.resources :clientes do |cliente|
cliente.resources :perfils, :path_name=>"_cliente",
:controller=>:cliente_perfils
end
me tira de los controladores correctamente, pero según entiendo por el
libro , las vistas a las que deberia acceder serÃa las definidas en la
carpeta perfil(para las vistas comunes a ambos), no a las definidas
dentro de las carpetas clientes_perfil y empleados_perfil
respectivamente,que es lo que a mi me pasa.
La llamada que realizo en las vistas es la siguiente:
new_cliente_perfil_path(cliente)
y new_empleado_perfil_path(empleado)
asà que el tema es:por que no me accede a la carpeta perfil en busca de
las vistas(como he comprobado en otros ejemplos del estilo que si hace).
ah, los controladores están definidos de la siguiente manera.
class ClientePerfilsController < PerfilsController
protected
def load_parent
@parent=@cliente=Cliente.find(params[:cliente_id])
end
end
class EmpleadoPerfilsController < PerfilsController
protected
def load_parent
@parent=@empleado=Empleado.find(params[:empleado_id])
end
end
y el de perfils(que aqui mando recortado por no poner metodos
innecesarios):
class PerfilsController < ApplicationController
before_filter :load_parent
before_filter :load_perfil
GET /perfils/new
GET /perfils/new.xml
def new
@perfil=Perfil.new
respond_to do |format|
format.html
format.xml { render :xml => @perfil }
end
end
POST /perfils
POST /perfils.xml
def create
@perfil = Perfil.new(params[:perfil])
respond_to do |format|
if @perfil.save
flash[:notice] = ‘perfil was successfully created.’
format.html { redirect_to(@perfil) }
format.xml { render :xml => @perfil, :status
=> :created, :location => @perfil }
else
format.html { render :action => “new” }
format.xml { render :xml => @perfil.errors, :status
=> :unprocessable_entity }
end
end
end
protected
def load_parent
end
def load_perfil
@[email protected] if @parent!=nil
end
end
Gracias por la ayuda, y espero haberme hecho entnder, porque hasta a mi
me ha costado explicarlo.