我需要在控制器的類中呈現Sinatra erb模板。我有問題調用此,但。我看着在西納特拉rdocs,並拿出了這一點:從另一個類中調用Sinatra erb
Sinatra::Templates.erb :template_to_render
當我這樣做,我得到以下錯誤:
undefined method `erb' for Sinatra::Templates:Module
有沒有辦法從另一個類調用此?
我需要在控制器的類中呈現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