【发布时间】:2012-09-17 15:07:29
【问题描述】:
我的应用中有一条如下所示的路线:
match '/:id' => 'controller#action', :constraints => { :id => VALID_IDS }
其中 VALID_IDS 是一个正则表达式白名单,例如
/(good_id|another_good_id|a_valid_id)/
现在看来,uri
/good_id_one
不匹配这个约束,即使
1.9.2p318 :004 > "good_id_one".match /^(good_id|another_good_id|a_valid_id)/
=> #<MatchData "good_id" 1:"good_id">
这是为什么呢?我有一个怀疑。 This guide 这么说
:constraints 接受正则表达式,但不能使用正则表达式锚。 但是请注意,您不需要使用锚点,因为所有路线都在开始时锚定。
rails在正则表达式的end处添加anchor也是这种情况吗?这可以解释我所看到的,因为
1.9.2p318 :006 > "good_id_one".match /^(good_id|another_good_id|a_valid_id)$/
=> nil
但是,我不确定这种怀疑是否正确。谁能证实或否认我的假设?
(附言,Rails 3.0.11, Ruby 1.9.2)
【问题讨论】:
标签: ruby-on-rails ruby-on-rails-3 routes