ruby - Sinatra Url '/' 解释

标签 ruby url sinatra

我是一个 ruby​​ 新手,现在已经尝试 Sinatra 一段时间了,我无法弄清楚的一件事是为什么 url 中的“/”会产生如此大的差异。 我的意思是不是:

get 'some_url' do 
end

get 'some_url/' do
end

应该指向同一条路线?为什么 Sinatra 认为它是不同的路线?我花了整整一个小时试图弄明白这一点。

最佳答案

根据 RFC 2616 和 RFC 2396(定义资源标识的 RFC),这些 URL 不定义相同的资源。因此 Sinatra 以不同的方式对待它们。这是特别的。如果您想象路由返回带有相关链接的页面,则很重要。这个链接

<a href="bar">click me</a>

会指向/bar如果你来自 /foo , 至 /foo/bar如果你来自 /foo/ .

您可以使用以下语法来定义匹配两者的路由:

get '/foo/?' do
  # ...
end

或者上面评论中提到的正则表达式版本。

关于ruby - Sinatra Url '/' 解释,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7645289/

相关文章:

ruby map !不改变包含的变量

ruby-on-rails - 带有 VI 命令的 Windows 最佳 Ruby 编辑器

ios - iOS URL方案或不存在的通用链接

ruby - Sinatra 路由和 i18n

ruby - Sinatra 不会在 Chrome 上通过重定向保持 session

ruby-on-rails - Django 中的 Ruby on Rails 模板 "extend"

url - 我应该存储 OpenID 的连接方案吗?

html - 编码 URL 中的双大于符号 (>>) 会生成 403 禁止错误

ruby-on-rails - ActiveRecord::ConnectionNotEstablished - X 没有连接池

ruby-on-rails - 如何使用用户 ID rails 4 在产品表中插入数据