【问题标题】:Ruby on Rails Routes: How to have OR in your routes without parameterizing itRuby on Rails Routes:如何在不参数化的情况下在路由中使用 OR
【发布时间】:2015-12-18 19:42:45
【问题描述】:

所以我有一条路线:

get '/:param1-:param2', param1: /some_constraint/, param2: /some_constraint/

有时我会得到格式为 /:param1+:param2 的 url。为了解决这个问题,我尝试了:

get '/:param1(-|+):param2', param1: /some_constraint/, param2: /some_constraint/

但问题是我认为括号使它成为可选的,因为这就是 Rails 路由的工作方式。我似乎不能使用正则表达式,除非变量被分配给它。如果我有一个变量 :symbol 分配给 (-|+) 约束,那么它就可以工作。但我不希望符号成为变量,因为这样我在构建路径和做其他事情时就必须记住符号作为参数。有没有更好的方法来做到这一点?

【问题讨论】:

    标签: ruby-on-rails ruby regex routing routes


    【解决方案1】:

    记住 routes.rb 文件是一个 Ruby 文件,所以你可以循环:

    %w(+ -).each |symbol|
      get "/:param1#{symbol}:param2", param1: /some_constraint/, param2: /some_constraint/
    end
    

    symbol 没有更好的名字,但你可以在你正在做的事情的上下文中找到更多的东西。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-07-17
      • 2021-08-06
      • 2019-08-18
      • 1970-01-01
      • 2013-10-04
      相关资源
      最近更新 更多