Sinatra提供多个.erb文件的方法

时间:2013-03-01 22:16:02

标签: ruby session sinatra session-cookies erb

我有一个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

...但不幸的是,这并不容易:(

有没有人有更好的主意?

1 个答案:

答案 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

基本上,我使用条件语句来确定要使用的页面。这个是基于参数。您也可以使用返回结果,或者您喜欢的其他条件。