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

标签 ruby sinatra jruby

我正在编写一个将多个路由的响应捆绑在一起的路由,因此我需要从 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/

相关文章:

ruby - shoes 是一个严肃的 ruby​​ GUI 工具包吗?

ruby - 模块化 Sinatra App,全局设置错误处理和配置

scala - 在 JRuby 中访问 Scala 数据结构

java - 将 Jruby ScriptEngine 输出重定向到 StringWriter

ruby - 使用 Pow 时为 "Application not found"

ruby - 对二维数组进行分组

ruby - Sinatra,数据映射器 : No such table errors

ruby - 与 sinatra 的 Authlogic?

linux - 为什么 JRuby script.rb > out.txt 不捕获 Java 错误?

php - 如何进行 XMLRPC::Client 身份验证