从另一个类中调用Sinatra erb
问题描述:
我需要在控制器的类中呈现Sinatra erb模板。我有问题调用此,但。我看着在西纳特拉rdocs,并拿出了这一点:从另一个类中调用Sinatra erb
Sinatra::Templates.erb :template_to_render
当我这样做,我得到以下错误:
undefined method `erb' for Sinatra::Templates:Module
有没有办法从另一个类调用此?
答
你可以有你的类返回模板名称,使其在主应用程序。
当然,这不完全是一个答案(我没有足够的代表加入这个帐户的注释),你很可能由现在反正正是这样做的...
答
模仿呈现行为在其他一些类(不控制器)西纳特拉控制器,你可以这样建立模块:
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
在这里,您可能需要调整settings.root
用例:
class ArticleIndexingPostBody
include ErbRender
def get_body
erb :'amp/articles/show', layout: :'amp/layout'
end
end
这将正确渲染布局模板,包括content_for
对此有什么答案了吗? – seenickcode 2014-07-27 06:57:17