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