我有一个Web项目,它将呈现一个基于各种.erb文件的HTML文件。 我不确定这样做的最佳方法,因为每个.erb文件都需要获取特定信息,例如cookie内容。
目前我使用了这个概念:
我有一个包含所有.erb文件的目录,使用以下文件进行渲染:
ERB.new(模板).result
呈现的HTML将返回到主.erb模板,该模板将再次由sinatra呈现,使用:
erb:main
结果非常好,但我没有机会在基于会话的Cookie中包含内容,因为.erb无法访问它们
我很确定,sinatra框架提供了一种更好的方法。一个好方法是......
require 'sinatra'
enable :sessions
get "/" do
content1 = erb :template1, :locals => { :cookie => session[:cookie] }
content2 = erb :template2, :locals => { :cookie => session[:cookie] }
erb :mainTemplate, :locals => { :content => [content1, content2] }
end
...但不幸的是,这并不容易:(
有没有人有更好的主意?
答案 0 :(得分:1)
以下是我为我做的事情:
get '/Login' do verbose = params['verbose']
cTest = MyTests.new("envo")
result = cTest.login()
if verbose == 'true'
erb :newResultPage, :locals => {:result => result}
elsif verbose == 'false'
erb :resultPage, :locals => {:result => result}
end
end
基本上,我使用条件语句来确定要使用的页面。这个是基于参数。您也可以使用返回结果,或者您喜欢的其他条件。