Hola!
Estoy un pelin liado y no se como hacer lo siguiente:
Estoy desarrollando un plugin que expanda las capacidades del
ActionController. Para ello me he creado un modulo que incluyo en el
ActionController::Base con el siguiente comando
ActionController::Base.send :include, MiModulo::Controller
Por otro lado, el codigo que contiene el modulo es el siguiente:
module MiModulo
module Controller
def self.included(mod)
mod.extend(ClassMethods)
end
module ClassMethods
def act_as_micontroller
extend MiModulo::Controller::SingletonMethods
include MiModulo::Controller::InstanceMethods
end
end
module SingletonMethods
def funcion_de_clase
end
end
module InstanceMethods
def funcion_de_instancia
end
end
end
end
Defino el controlador de la siguiente manera:
class PruebaController < ApplicationController
act_as_micontroller
end
Creo que es mas de lo que yo necesito porque, por ahora me bastaria con
acceder a las funciones propias de la instancia (por ejemplo:
funcion_de_instancia) desde PruebaController (cosa que ahora mismo no
puedo, me da error de que no encuentra la funcion.
Por otro lado, es un poco engorroso el act_as_micontroller, ya os he
comentado que no es lo que necesito, pero si me interesa dejar el plugin
limpio para poder añadir mas funciones de clases y de instancia en un
futuro.
Por ultimo, me gustaria que la vista pudiese acceder a una variable de
instancia. Se que se puede hacer con la funcion: helper_attr.
Pero no se donde definir la variable para que pueda llamar a helper_attr
y quede disponible para la vista y, además, dicha variable quede
accesible a la funcion: funcion_de_instancia.
Os agradecerÃa mucho que me arrojaseis un poco de luz en este tema
porque, si bien reconozco que estoy un poco verde en esto de Mixins, no
consigo que me funcione las mil y unas posibilidades que he encontrado
por internet.
Un saludo
Roberto M. Oliva