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