我的Rails 3应用程序中有以下路径。
post 'games/:id/:task/:card_id' => 'games#perform', :as => :perform
…这显然允许
button_to("Foo", {card_id=>2, :action=>:perform, :task=>"foo"})
,映射到URL
/games/1/foo/2
.
我想限制路由匹配的任务集。这个
Rails API docs
指示“约束可以包括ignorecase和扩展语法正则表达式修饰符”。但是,以下工作符合预期:
post 'games/:id/:task/:card_id' => 'games#perform', :as => :perform, :constraints => {:task => /(foo|bar)/}
但以下情况并非如此:
post 'games/:id/:task/:card_id' => 'games#perform', :as => :perform, :constraints => {:task => /(foo|
bar)/x}
在后一种情况下,
button_to
上面的链接生成URL:
/games/perform?card_id=2&task=foo
.
这是一个错误,还是我做错了什么?