3

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

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

就约束属性而言,我如何在 sinatra 中对其进行重构?

谢谢!

4

2 回答 2

3

您可以这样做:(取自Sinatra 的文档

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
于 2012-06-27T12:33:35.737 回答
2

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

require 'sinatra'

get %r{verify/(?<name>\w+)/(?<bundle>.*)/(?<license>\w+)} do |name, bundle, license|
  # do stuff
end
于 2012-06-27T12:54:42.823 回答