0

在我的 routes.rb 文件中,我定义了这些路由:

  map.with_options(:controller => "review") do |review|
    review.review_index    "/review/:page", :action => "index", :defaults => {:page => nil}, :requirements => {:page => /[0-9]./}
    review.review_provider "/review/:category_name/:page", :action => "provider", :defaults => {:page => nil}
  end

但是,它仅与第二条路线匹配。例如,

/review/1

必须与第一条规则匹配,但实际上它与第二条规则匹配。

我该如何配置它以便:

/review/1 will match with the first rule
/review/a_category/1 will  match with the second rule
4

1 回答 1

1

您在第一条路线中的正则表达式很糟糕。句点匹配任何单个字符。

/[0-9]/表示“任何数字,后跟任何其他单个字符”。

所以,这将匹配/review/1a, /review/70, /review/7?, 等

如果要匹配一位或多位数字,请将正则表达式更改为:/[0-9]+/

于 2013-05-14T06:35:07.077 回答