W3Cschool
恭喜您成為首批注冊用戶
獲得88經(jīng)驗值獎勵
路由也可以包含多樣的匹配條件,比如 user agent(用戶代理,比如瀏覽器就是一種用戶代理):
get '/foo', :agent => /Songbird (\d\.\d)[\d\/]*?/ do
"你正在使用Songbird,版本是 #{params[:agent][0]}" # :agent 代表了用戶代理相關(guān)的變量,版本的信息相當?shù)娜?end
get '/foo' do
# 匹配除Songbird以外的瀏覽器
end
其他可選的條件是 host_name 和 provides:
get '/', :host_name => /^admin\./ do
"管理員區(qū)域,無權(quán)進入!" # host_name 表示的是主機用戶的名字
end
get '/', :provides => 'html' do
haml :index
end
get '/', :provides => ['rss', 'atom', 'xml'] do
builder :feed
end
provides 查找請求的 Accpet 頭部信息
你也可以使用?set
?方法自定義條件:
set(:probability) { |value| condition { rand <= value } }
get '/win_a_car', :probability => 0.1 do
"You won!"
end
get '/win_a_car' do
"Sorry, you lost."
end
如果某條件需要多個值作為輸入,可以使用 通配符 參數(shù) :
set(:auth) do |*roles| # <- notice the splat here
condition do
unless logged_in? && roles.any? {|role| current_user.in_role? role }
redirect "/login/", 303
end
end
end
get "/my/account/", :auth => [:user, :admin] do
"Your Account Details"
end
get "/only/admin/", :auth => :admin do
"Only admins are allowed here!"
end
Copyright©2021 w3cschool編程獅|閩ICP備15016281號-3|閩公網(wǎng)安備35020302033924號
違法和不良信息舉報電話:173-0602-2364|舉報郵箱:jubao@eeedong.com
掃描二維碼
下載編程獅App
編程獅公眾號
聯(lián)系方式:
更多建議: