2012-06-27 35 views
3

我在sinatra重建一个小轨道(太矫枉过正)的应用程序。我有这样的路线:西纳特拉路线正则表达式约束?

match 'verify/:name/:bundle/:license' => 'verify#index', :constraints => { :bundle => /.*/ } 

我怎么能rebould它西纳特拉在约束属性中的项?

谢谢!

回答

4

您可以这样来做:(从Sinatra's documentation拍摄)

get %r{/hello/([\w]+)} do 
    "Hello, #{params[:captures].first}!" 
end 

或者块本身内:

get '/hello/:name' do 
    raise Sinatra::NotFound unless params[:name].match /\w+/ 
    "Hello, #{params[:name]}!" 
end 
2

如果你使用Ruby 1.9,你可以使用一个名为捕获在正则表达式路由中,像这样:

require 'sinatra' 

get %r{verify/(?<name>\w+)/(?<bundle>.*)/(?<license>\w+)} do |name, bundle, license| 
    # do stuff 
end