【问题标题】:Rails routing with a parameter that includes slash(/)带有包含斜杠(/)的参数的 Rails 路由
【发布时间】:2011-05-15 11:09:13
【问题描述】:

我想如下设置路由

  • /url/http://google.comurls 控制器和 index 操作。

我现在在routes.rb 中拥有的是:

match "urls/:url" => "urls#index"

路由似乎不起作用,因为:url 中的斜线。

【问题讨论】:

    标签: ruby-on-rails


    【解决方案1】:
    get ':klass/:id', constraints: { klass: /\D*/ }
    

    【讨论】:

      【解决方案2】:

      或者你可以使用 Route Globbing:

      match "urls/*url" => "urls#index"
      

      您可以通过以下方式访问控制器中的值 params[:url]

      参考: http://guides.rubyonrails.org/routing.html 搜索“路由匹配”

      【讨论】:

      • 好的,但是如果它在命名空间中呢?如果我这样做:match '/services/:controller/*path/:id' => "/services/:controller#show", :via => :get 并转到/services/foo/a/b 我得到uninitialized constant FooController。不过,/services/foo/services/foo/a 可以工作。
      【解决方案3】:

      你可以做类似的事情

      match "urls/:url" => "urls#index", :constraints => {:url => /.*/}
      

      在 Rails 2.3 中,它可能在 Rails 3 中工作,以允许您匹配 :url 中的 /(虽然,我目前无法测试。)

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2015-09-07
        • 1970-01-01
        • 1970-01-01
        • 2019-05-22
        • 2011-03-23
        • 2013-05-25
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多