Sinatra可选参数运算符和语法。什么是正确的语法?

时间:2015-01-04 03:16:50

标签: ruby routes sinatra

get '/foo/?bar'
  "Hi"
end

网址:

www.yahoo.com/foo/about/blog   
www.theatlantic.com/foo/about

打那条路? ?运算符在这里工作吗?或者我需要两个?标记?我正在阅读 Sinatra Up and Running ,但它似乎没有列出。这似乎很重要。

2 个答案:

答案 0 :(得分:2)

正确的语法是:

get '/foo/?:bar?' do
  "Hi"
end

第一个问号使前面的/可选,第二个使前面的符号:bar可选,这样: /foo/about - 是的 /foo/about/blog - 没有 /foo - 是的 /foo/ - 是的

否则,您只能使用

选择:bar个符号
get '/foo/:bar?' do
  "Hi"
end

这样:
/foo/about - 是的 /foo/about/blog - 没有 /foo - 没有 /foo/ - 是的

再举一个例子,这个选项:

get '/go/?:bar' do 
    "wow"
end

实际上相当于:

get '/go/:bar' do 
    "wow"
end

答案 1 :(得分:1)

您可以提供普通的正则表达式来匹配路线。例如,一个非常允许的“foo”路由接受具有 子字符串“foo”的每个路由:

get /foo/ do
  'From ANY path that includes the word foo!'
end

这将匹配:

  1. /foo
  2. /foobar
  3. /bar/another_foo/something_else