使用Sinatra中的查询字符串触发另一个路由

时间:2012-01-31 15:28:44

标签: ruby sinatra jruby

我正在写一条路线将几条路线的响应捆绑在一起,所以我需要从Sinatra内部触发其他路线。我在Sinatra README中找到了这样的代码:

status, headers, body = call env.merge("PATH_INFO" => '/bar')

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

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

这似乎不起作用。如何调用另一个路由并传递查询字符串,以使字符串中的值最终出现在被调用路由的params散列中。

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

2 个答案:

答案 0 :(得分:4)

所以解决方案是清除@original_params变量。显然,即使它出现在Sinatra README中,也不支持。时间允许我重新修改我的路线所以这不是必需的,但是你有。

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

答案 1 :(得分:0)

您可以将params添加到此"/bar?param=1&anotherparam=3"

之类的路线中