2010-03-08 15 views
7

Necesito renderizar una plantilla de Sinatra erb dentro de una clase en mi controlador. Estoy teniendo problemas para llamar esto sin embargo. He mirado en los rdocs Sinatra y han llegado con esto:Llamar a Sinatra erb de otra clase

Sinatra::Templates.erb :template_to_render 

Cuando hago esto, me sale el siguiente error:

undefined method `erb' for Sinatra::Templates:Module 

¿Hay una manera de llamar a esto de otra clase ?

+0

ninguna respuesta sobre esto todavía? – seenickcode

Respuesta

0

razón por la que no requieren 'erb' y después de su uso sólo erb


    ## You'll need to require erb in your app 
    require 'erb' 

    get '/' do 
    erb :index 
    end 
+0

Gracias, pero eso no funciona para lo que estoy haciendo. Esas instrucciones son bastante antiguas y no se aplican a las versiones actuales de Sinatra. Idealmente, me gustaría utilizar el erb incorporado de Sinatra. – Eugene

+0

¿qué versión de sinatra? – shingara

0

Usted podría tener su clase devolver el nombre de la plantilla y lo hacen en la aplicación principal.

Por supuesto que no es exactamente una respuesta (no tengo representante suficiente para agregar un comentario a esta cuenta) y es probable que estés haciendo eso por ahora de todos modos ...

1

Para imitar el comportamiento de renderizado Sinatra controlador de alguna otra clase (no controlador) puede crear módulo de la siguiente manera:

module ErbRender 

    include Sinatra::Templates 
    include Sinatra::Helpers 
    include Sinatra::ContentFor 

    def settings 
    @settings ||= begin 
     settings = Sinatra::Application.settings 
     settings.root = "#{ROOT}/app" 
     settings 
    end 
    end 

    def template_cache 
    @template_cache ||= Tilt::Cache.new 
    end 

end 

Aquí puede que tenga que ajustar settings.root

ejemplo de uso:

class ArticleIndexingPostBody 

    include ErbRender 

    def get_body 
    erb :'amp/articles/show', layout: :'amp/layout' 
    end 

end 

Esto hará correctamente las plantillas con diseños incluyendo content_for

Cuestiones relacionadas