W3Cschool
恭喜您成為首批注冊用戶
獲得88經(jīng)驗值獎勵
模板被假定直接位于?./views
?目錄。使用不同的視圖目錄,可以這樣設(shè)置:
set :views, File.dirname(FILE) + '/templates'
每個模板語言都可以通過其自身的渲染方法 (比如:erb,haml) 來渲染,這些方法可以簡單的返回字符串。
get '/' do
erb :index
end
get '/index' do
code = "<%= Time.now %>"
erb code
end
模板可以接受第二個參數(shù),即選項 hash:
get '/' do
erb :index, :layout => :post
end
上面的代碼,將會將?views/index.erb
?渲染到?views/post.erb
?(布局模板) 文件中,默認(rèn)的布局模板是?views/layout.erb
?。
任何 Sinatra 不理解選項都將被傳遞到模板引擎中。
get '/' do
haml :index, :format => :html5
end
通過 set 選項,可以設(shè)置模板語言的通用選項:
set :haml, :format => :html5 # html5是新技術(shù),使用新技術(shù)有風(fēng)險也有挑戰(zhàn)
get '/' do
haml :index
end
傳遞給 render 方法的選項可以通過?set
?方法進(jìn)行設(shè)置,常見的選項如下:
locals
?: 列出傳遞給文檔的局部變量 (locals),用來處理部分視圖。例如:?erb "<%= foo %>", :locals => {:foo => "bar"}
?default_encoding
?: 不確定時使用的字符編碼,默認(rèn)為 settings.default_encoding.views
?: 加載模板的視圖文件夾,默認(rèn)為:settings.views.layout
?: 是否使用布局 (true 或者 false). 如果為符號,表明所使用的模板,例如:?erb :index, :layout => !request.xhr
??(這個實例不錯,判斷是否是 xhr,從而確定是否使用布局)content_type
?: 模板所生成的內(nèi)容類型 (json,html,js 之類), 模板依賴模板語言scope
?: 渲染模板所在的域。默認(rèn)為應(yīng)用程序?qū)嵗?。如果改變值,實例變量和輔助方法都將不在可得獲取layout_engine
?: 模板應(yīng)用用來渲染布局,這對那些不支持布局的語言非常有用。默認(rèn)使用模板引擎,例如:?set :rdoc , :layout_engine => :erb
?layout_options
?: 僅用來渲染布局的特定選項,例如:?set :rdoc, :layout_options => { :views => 'views/layouts' }
?Sinatra 總是假設(shè)模板位于?/views
?目錄,可以?set :views, settings.root + '/templates'
?設(shè)置不同的視圖文件。
請記住一件非常重要的事情,你只可以通過符號引用模板,即使它們在子目錄下(在這種情況下,使用 :'subdir/template')。你必須使用一個符號,因為渲染方法會直接地渲染任何傳入的字符串。
Copyright©2021 w3cschool編程獅|閩ICP備15016281號-3|閩公網(wǎng)安備35020302033924號
違法和不良信息舉報電話:173-0602-2364|舉報郵箱:jubao@eeedong.com
掃描二維碼
下載編程獅App
編程獅公眾號
聯(lián)系方式:
更多建議: