如何匹配Sinatra的regex路线?

时间:2012-09-11 18:34:13

标签: ruby sinatra

我正在尝试从sinatra教程中创建此代码片段,以便我可以根据正则表达式匹配设置一些路由。它似乎没有工作,我直接从教程复制粘贴,任何关于我缺少的想法。假设我的sinatra应用程序正在工作,我有其他正确结构的GET路由工作,所以我不清楚为什么这样的直接复制不起作用。

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

应该正确映射http://0.0.0.0:4567/hello的路由,但是路由到'sinatra不知道这个小曲'错误消息。

THKS。

1 个答案:

答案 0 :(得分:2)

%r{/hello/([\w]+)}根本不匹配/hello。你的正则表达式需要一个斜杠和另一个字符串,但你的路径不包含它。

该路线符合/hello/there但不符合/hello甚至/hello/

鉴于您正在查看捕获,您可能根本不希望这与/hello一起使用,因为捕获将是nil并且谁想要问nil 1}}?