W3Cschool
恭喜您成為首批注冊(cè)用戶
獲得88經(jīng)驗(yàn)值獎(jiǎng)勵(lì)
find_template 輔助方法被用于在渲染時(shí)查找模板文件:
find_template settings.views, 'foo', Tilt[:haml] do |file|
puts "could be #{file}"
end
這并不是很有用。但是在你需要重載這個(gè)方法 來(lái)實(shí)現(xiàn)你自己的查找機(jī)制的時(shí)候有用。比如,如果你想支持多于一個(gè)視圖目錄:
set :views, ['views', 'templates']
helpers do
def find_template(views, name, engine, &block)
Array(views).each { |v| super(v, name, engine, &block) }
end
end
另一個(gè)例子是為不同的引擎使用不同的目錄:
set :views, :sass => 'views/sass', :haml => 'templates', :default => 'views'
helpers do
def find_template(views, name, engine, &block)
_, folder = views.detect { |k,v| engine == Tilt[k] }
folder ||= views[:default]
super(folder, name, engine, &block)
end
end
你可以很容易地包裝成一個(gè)擴(kuò)展然后與他人分享!
請(qǐng)注意 ?find_template
? 并不會(huì)檢查文件真的存在,而是對(duì)任何可能的路徑調(diào)用給入的代碼塊。這并不會(huì)帶來(lái)性能問(wèn)題,因?yàn)?render 會(huì)在找到文件的時(shí)候馬上使用 break。同樣的,模板的路徑(和內(nèi)容)會(huì)在除 development mode 以外的場(chǎng)合 被緩存。你應(yīng)該時(shí)刻提醒自己這一點(diǎn),如果你真的想寫(xiě)一個(gè)非常瘋狂的方法。
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)系方式:
更多建議: