2010-04-18 24 views

Respuesta

6

Sure it is.

Pero creo que esta no es la mejor solución si solo necesita algunas páginas con el mismo diseño y diferente contenido.

Si realmente quiere que los ERB se guarden en la base de datos, cree un modelo con sus ERB guardados. Entonces puede invocar un código de controlador como este, para renderizar ese ERB.

erb = ERB_model.find(...) 
@some_model_data = SomeModel.find(...) 
erb = ERB.new(erb.source) 
render :text => erb.result, :layout => true (or another) 

Mirar ERB.new parámetros.

+0

Gracias! Quiero almacenar erb's en la base de datos porque tengo muchos subsitios en mi aplicación de rieles (como blogger tiene muchos blogs) con plantillas personalizables y no quiero almacenar erbs en el disco. Sí, conozco las plantillas de lliquid pero necesito un motor funcional y no me importa la seguridad porque todos los subsitios están controlados por un usuario (mi cliente). Pero todavía estoy pensando en almacenar plantillas en directorios como "app/views/# {site.id} /". Simplemente no quiero hacer operaciones de archivos ... Creo que está mal ... no es un camino de rieles. –

+0

Estoy de acuerdo con usted. DB way es más rails-way, porque necesitará menos código (feo). Acabo de agregar algunas correcciones a mi respuesta (probablemente utilizará diseños y algunas variables dentro de ERB). – retro

2

También estoy trabajando en un concepto casi igual en el que está trabajando. También necesito que mis clientes creen sus propios sitios web

Inicialmente también tuve la idea de guardar todos los erbs en la base de datos, pero más tarde abandoné esa idea, aunque funciona para páginas de texto plano, cuando quiere renderizar componentes y parciales, no será fácil.

y sobre todo he tenido problemas sobre cómo guardar archivos en la base de datos layout.erb

, así que decidí ir de una manera que la página va a construir en el subdominio

aplausos, sameera

3

I encontró mejor manera:

def show 
    @modal_popup = ModalPopup.find(params[:id]) 
    # erb = ERB.new(@modal_popup.content) 
    # render :text => erb.result, :layout => false 
    render :inline => @modal_popup.content, :layout => false 
end 

Uso esta acción dentro de iframe o renderizo la acción desde otras vistas.

+0

¡Funciona! Muchas gracias hombre –

Cuestiones relacionadas