В моем приложении на 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 указывают, что «Ограничения могут включать модификаторы регулярных выражений« 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
.
Это ошибка или я что-то не так делаю?