使用Sinatra内部的查询字符串触发另一条路线

Hem*_*ock 5 ruby jruby sinatra

我正在编写一条将多个路由的响应捆绑在一起的路由,因此我需要从Sinatra内触发其他路由。我在Sinatra自述文件中找到了以下代码来做到这一点:

status, headers, body = call env.merge("PATH_INFO" => '/bar')
Run Code Online (Sandbox Code Playgroud)

但是,它不发送查询字符串。所以我尝试了这个:

status, headers, body = call env.merge(
    "PATH_INFO" => '/bar', 
    "QUERY_STRING" => 'param=1'
)
Run Code Online (Sandbox Code Playgroud)

这似乎不起作用。如何调用另一个路由并传递查询字符串,使得字符串中的值最终位于被调用路由的params哈希中。

我们正在使用Sinatra 1.3.1和Rack 1.3.5。

Hem*_*ock 4

所以解决办法就是清除该@original_params变量。显然,即使它出现在 Sinatra README 中,这也是不受支持的。如果时间允许,我会重新设计我的路线,所以这不是必需的,但你已经完成了。

@original_params = nil
status, headers, body = call env.merge(
    "PATH_INFO" => '/bar', 
    "QUERY_STRING" => 'param=1'
)
Run Code Online (Sandbox Code Playgroud)