在我们的应用中,我们有tag
模型,例如red
yellow
big
small
等多个类别,例如color
和size
(标记模型确实有一个字段category
)。现在,而不是
/tags/big
/tags/small
/tags/red
/tags/yellow
/tags
我们想要像
这样的路线/size/big
/size/small
/color/red
/color/yellow
/size
/color
...
此外,网址助手也应该工作,即tag_path
应该产生正确的网址
如何在routes.rb文件中执行此操作?谢谢!
修改
答案 0 :(得分:0)
您可以使用带约束的路线。定义一个与自定义条件执行匹配的类。您可以使用match
搜索API以查看详细信息。
我假设你的标签有两列名为“category”和“name”。
route.rb
match ':category/:name' => 'tags#show', via: 'get', constraints: TagRouteWhiteList.new, as: 'tag'
应用程序/模型/ tag_route_white_list.rb
class TagRouteWhiteList
def matches(request)
Tag.distinct('category').include?(request.params[:category]) && Tag.distinct('name').include?(request.params[:name])
end
end
在您看来,您可以使用tag_path(category: @tag.category, name: @tag.name)