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

标签 ruby routes sinatra

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

请问网址:

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

走那条路? ? 运算符在这里工作吗?还是我需要两个 ? 标记?我正在阅读 Sinatra Up and Running 但它似乎没有列出此内容。这似乎很重要。

最佳答案

正确的语法是:

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

关于ruby - Sinatra 可选参数运算符和语法。什么是正确的语法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27762006/

相关文章:

ruby-on-rails - Ruby on Rails 中的面包屑导航

ruby - 如何检查字符串是否包含带重音的拉丁字符,如 Ruby 中的 é?

css - 我的 haml 文件中的 css 路径有问题

ruby - 如何从 sinatra 中的流 block 内部停止?

ruby-on-rails - PG::AdminShutdown: FATAL: 由于管理员命令而终止连接

ruby-on-rails - VPS 的 Memcached Gui 管理器

ruby - private、protected 和 public 的范围

ruby-on-rails - Rails button_to 失败,路径不存在对于存在的路径

ruby-on-rails - 嵌套资源的 Rails 路线索引

ruby-on-rails - Rails 未在生产中呈现 404