我正在编写一个将多个路由的响应捆绑在一起的路由,因此我需要从 Sinatra 中触发其他路由。我在 Sinatra 自述文件中找到了执行此操作的代码:
status, headers, body = call env.merge("PATH_INFO" => '/bar')
但是,它不会发送查询字符串。所以我尝试了这个:
status, headers, body = call env.merge(
"PATH_INFO" => '/bar',
"QUERY_STRING" => 'param=1'
)
这似乎行不通。我如何调用另一个路由并传递查询字符串,以便字符串中的值最终出现在被调用路由的参数散列中。
我们使用的是 Sinatra 1.3.1 和 Rack 1.3.5。
最佳答案
因此解决方案是清除@original_params
变量。显然,即使它出现在 Sinatra README 中也是不受支持的。如果时间允许,我会重新设计我的路线,所以这不是必需的,但你已经做到了。
@original_params = nil
status, headers, body = call env.merge(
"PATH_INFO" => '/bar',
"QUERY_STRING" => 'param=1'
)
关于ruby - 在 Sinatra 中使用查询字符串触发另一个路由,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9082144/