【问题标题】:How to use params with slashes with Sinatra?如何在 Sinatra 中使用带有斜线的参数?
【发布时间】:2010-10-06 10:57:19
【问题描述】:

在使用sinatra 时,我遇到了一个小问题:当我使用带有斜杠的参数时,它会混淆路由器引擎。那么有没有一种很好的方法来处理这种参数而无需对其进行编码?

代码看起来像

get 'add/:url' do
   #....
end

我打算让 /add/http://sctackoverflow.com/ 工作

【问题讨论】:

    标签: ruby parameters routing routes sinatra


    【解决方案1】:

    或使用:

    url = request.fullpath[5..-1]
    

    【讨论】:

      【解决方案2】:

      谢谢,我还没有听说过 splat 参数,它非常适合这种情况。事实上,我查看了文档,发现使用捕获参数和正则表达式更短:

      get %r{/add/(.+)} do
        url = params[:captures]
      end
      

      【讨论】:

        【解决方案3】:

        您是否尝试使用 splat 参数?

        类似:

        get '/add/*' do
          protocol = params[:splat].first
          address = params[:splat][1..-1].join('/')
        
          url = protocol + "//" + address
        end
        

        【讨论】:

          猜你喜欢
          • 2013-04-08
          • 2015-12-01
          • 2017-02-05
          • 1970-01-01
          • 2018-09-10
          • 2023-03-17
          • 2013-06-29
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多