这里不使用正则表达式,只应使用
custom route constraint
:
class Category
OPTIONS = {
"general" => [
"announcements",
"suggestions",
"member-introductions",
],
"ruby-on-rails" => [
"news",
"developers",
"tutorials",
],
"off-topic" => [
"miscellaneous",
"jobs-and-projects",
"funny-stuff",
]
}
end
class CategoryConstraint
def matches?(request)
options = Category::OPTIONS
category = request.params[:category]
subcategory = request.params[:subcategory]
options[category] && options[category].include?(subcategory)
end
end
Rails.application.routes.draw do
resources :posts, constraints: CategoryConstraint.new
end
您可以使用将其简化为DSL
only
.