Sinatra路由正则表达式的约束?

时间:2012-06-27 11:18:40

标签: ruby-on-rails routes sinatra

我在sinatra重建了一个小轨(太矫枉过正)的应用程序。我有这样的路线:

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

我怎样才能在约束属性方面在sinatra中重新组合它?

谢谢!

2 个答案:

答案 0 :(得分: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

答案 1 :(得分:2)

如果您使用的是ruby 1.9,则可以在正则表达式路由中使用命名捕获,如下所示:

require 'sinatra'

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