【发布时间】:2019-09-12 06:44:15
【问题描述】:
我正在尝试更改 Sinatra 中 before 块中的请求参数。
似乎使用这种语法时,它可以工作:
before do
@params['global-before'] = 'yes'
end
但是当使用这种语法时,它不起作用:
before '/:id/test' do
@params['route-before'] = 'yes'
end
这是一个完整的例子:
# test.rb
require 'sinatra'
require 'sinatra/reloader'
set :bind, '0.0.0.0'
set :port, 3000
before do
@params['global-before'] = 'yes'
end
before '/:id/test' do
@params['route-before'] = 'yes'
end
get '/' do
params.to_json
end
get '/:id/test' do
params.to_json
end
然后运行:
$ ruby test.rb
$ curl localhost:3000
{"global-before":"yes"}
$ curl localhost:3000/123/test
{"global-before":"yes","id":"123"}
我期待看到params['route-before'] 也被填充。
我尝试使用request.params 代替@params,但这根本不起作用。
有人能解释一下吗?
更新:
在 Sinatra 的问题跟踪器中打开了 issue
【问题讨论】: