1

我有一个 Web 项目,它将呈现基于各种 .erb 文件的 HTML 文件。我不确定执行此操作的最佳方法,因为每个 .erb 文件都需要获取特定信息,例如 cookie 内容。

目前我已经使用了这个概念:

  • 我有一个包含所有 .erb 文件的目录,这些文件使用以下方式呈现:

    ERB.new(模板).result

  • 渲染的 HTML 将返回到主 .erb 模板,该模板将再次由 sinatra 渲染,使用:

    erb:主要

  • 结果非常好,但我没有机会从基于会话的 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

...但是,不幸的是,它并没有那么容易:(

有人有更好的主意吗?

4

1 回答 1

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

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

于 2013-03-01T22:41:04.403 回答