我是一个红宝石新手,现在已经尝试了Sinatra很长一段时间了,我不知道的一件事是为什么网址中的'/'会产生如此大的差异.我的意思是:
get 'some_url' do
end
Run Code Online (Sandbox Code Playgroud)
和
get 'some_url/' do
end
Run Code Online (Sandbox Code Playgroud)
假设指向同一条路线?为什么Sinatra认为它是不同的路线?我花了一个小时试图解决这个问题.
根据 RFC 2616 和 RFC 2396(定义资源标识的 RFC),这些 URL 不定义相同的资源。因此西纳特拉对他们区别对待。这是特别是。如果您想象路由返回带有相关链接的页面,则这一点很重要。这个链接
<a href="bar">click me</a>
Run Code Online (Sandbox Code Playgroud)
/bar如果您来自/foo,则会指向,/foo/bar如果您来自/foo/。
您可以使用以下语法来定义与两者匹配的路由:
get '/foo/?' do
# ...
end
Run Code Online (Sandbox Code Playgroud)
或者上面评论中提到的正则表达式版本。
| 归档时间: |
|
| 查看次数: |
277 次 |
| 最近记录: |