W3Cschool
恭喜您成為首批注冊(cè)用戶
獲得88經(jīng)驗(yàn)值獎(jiǎng)勵(lì)
前置過濾器 (before) 在每個(gè)請(qǐng)求前,在請(qǐng)求的上下文環(huán)境中被執(zhí)行,而且可以修改請(qǐng)求和響應(yīng)。在過濾器中設(shè)定的實(shí)例變量可以被路由和模板訪問:
before do
@note = 'Hi!'
request.path_info = '/foo/bar/baz'
end
get '/foo/*' do
@note #=> 'Hi!'
params[:splat] #=> 'bar/baz'
end
后置過濾器 (after) 在每個(gè)請(qǐng)求之后,在請(qǐng)求的上下文環(huán)境中執(zhí)行,而且可以修改請(qǐng)求和響應(yīng)。在前置過濾器和路由中設(shè)定的實(shí)例變量可以被后置過濾器訪問:
after do
puts response.status
end
請(qǐng)注意:除非你顯式使用 body 方法,而不是在路由中直接返回字符串,消息體在后置過濾器是不可用的,因?yàn)樗谥蟛艜?huì)生成。
過濾器可以可選地帶有范式 (pattern),只有請(qǐng)求路徑滿足該范式 (pattern) 時(shí)才會(huì)執(zhí)行:
before '/protected/*' do
authenticate!
end
after '/create/:slug' do |slug|
session[:last_slug] = slug
end
和路由一樣,過濾器也可以帶有條件:
before :agent => /Songbird/ do
# ...
end
after '/blog/*', :host_name => 'example.com' do
# ...
end
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)系方式:
更多建議: