Herencia de Controladores y Vistas

Hola a todos.

A ver si me podéis ayudar a entender un problema que he encontrado y al
que no veo sentido.

Tengo en mi primordio de proyecto un Controlador del que hereda toda
una colección de controladores. Llamémosle X:

                            X
                           /|\
                          T U V

X tiene métodos que son usados T, U y V, y define el layout común para
todos. Hasta ahí, todo bien. El problema llega cuando quiero que las
vistas para los métodos que define X sean también compartidas entre T,
U y V. Para ello las pongo en el directorio views/X y… no funciona :frowning:

Si pongo las vistas en views/T, views/U y views/V, todo va bien, pero
eso me obliga a triplicarlas, con la consiguiente complejidad añadida
al mantenimiento posterior.

Da la sensación de que lo que quiero hacer debería ser legítimo, pero
no sé si algo se me escapa o estoy cometiendo algún error de bulto.

Vuestras ideas y comentarios serán, como siempre, un tesoro para
mí.
Gracias.

						David

Cuando haces el render, rails va a buscar por defecto la vista al
directorio correspondiente al controlador. Afortunadamente, puedes
cambiar este comportamiento por defecto (yo lo uso mucho para partials
genéricos de mensajes de error y similares) incluyendo el path completo
al hacer el render

en tu caso, dentro de T,U o V puedes hacer render :template =>
‘X/mi_vista’

y eso lo puedes hacer independientemente de que tu controller herede de
X o no. El path que tienes que poner es siempre partiendo del directorio
“views”

saludos,

j

El martes 21 de noviembre, javier ramirez
escribió:> en tu caso, dentro de T,U o V puedes hacer render :template =>

‘X/mi_vista’

Excelente. Como puedo hacerlo directamente en los métodos compartidos
de X, así no es necesario duplicar nada de código :slight_smile:

Muchas gracias por el apunte.

							David