1

我想知道,如何为我的路线定义约束正则表达式,只有当它排除组中的每个元素时才会匹配。

例如,我想这样做:

get "list/:action", :constraints => {:action => [NONE OF THE FOLLOWING: (new, edit, delete, update)}

我知道如果我们希望它匹配列表中的任何元素,我们会这样定义:

get "list/:action", :constraints => {:action => /(new|edit|delete|update)/},但我不知道如何使它如上所述工作。

我在小组之前尝试过使用^!符号,但到目前为止没有运气 - 我认为必须有另一种表示法。

我将如何排除这些元素?

4

1 回答 1

3

试试下面的。它将从路线中排除操作。

class ExcludeActions
  def matches?
    ["new", "edit", "delete", "update"].exclude? params[:action]
  end
end

get "list/:id", :constraints => ExcludeActions.new

这将从路由中排除、newedit动作deleteupdatelist

于 2013-04-01T09:29:04.307 回答