-1

在我们的应用程序中,我们有一个tag模型,例如,red yellow big small在几个类别中,例如colorsize(标签模型确实有一个字段category)。现在,而不是

/tags/big
/tags/small
/tags/red
/tags/yellow
/tags

我们想要像这样的路线

/size/big
/size/small
/color/red
/color/yellow
/size
/color
...

此外,url 助手也应该工作,即,tag_path应该产生正确的 url 如何在 routes.rb 文件中执行此操作?谢谢!!

编辑:

  1. 也需要让索引页面/url_helper 工作
  2. will_paginate 使用 tag_path 生成带有页码的链接。需要重载tag_path?
4

1 回答 1

0

您可以使用带约束的路线。定义一个执行自定义条件匹配的类。您可以搜索 APImatch以查看详细信息。

我假设您的标签有两列名为“类别”和“名称”。

路由.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)

于 2013-08-28T13:46:44.977 回答