我想知道,如何为我的路由定义约束正则表达式,只有当它排除组的每个元素时才会匹配。
例如,我想这样做:
get "list/:action", :constraints => {:action => [NONE OF THE FOLLOWING: (new, edit, delete, update)}
我知道如果我们想让它匹配列表中的任何元素,我们应该这样定义:
get "list/:action", :constraints => {:action => /(new|edit|delete|update)/},
,但我不知道,如何使其工作如上所述。
我试过在组之前使用^
和!
符号,但到目前为止还没有运气-我认为必须有另一种符号。
如何排除这些元素?
尝试以下操作。它会从路由中排除动作。
class ExcludeActions
def matches?
["new", "edit", "delete", "update"].exclude? params[:action]
end
end
get "list/:id", :constraints => ExcludeActions.new
这将从list
的路由中排除new
, edit
, delete
和update
动作