Ruby on Rails在路由约束中排除了group元素



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

例如,我想这样做:

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, deleteupdate动作

最新更新