【发布时间】:2013-05-20 17:12:44
【问题描述】:
StackOverflow 似乎有这种风格的提问方式:
/questions/:id/*slug
在路由和to_param 中都很容易实现。
但是,当只传递一个 ID 时,StackOverflow 似乎也会重定向到该路径。
示例:
stackoverflow.com/questions/6841333
重定向到:
stackoverflow.com/questions/6841333/why-is-subtracting-these-two-times-in-1927-giving-a-strange-result/
弹头的任何变化都一样
stackoverflow.com/questions/6841333/some-random-stuff
仍将重定向到相同的 URL。
我的问题是:这种类型的重定向通常在控制器中处理(将请求与路由进行比较)还是有办法在 routes.rb 中执行此操作?
我认为在 routes.rb 文件中不可能做到这一点的原因是,您通常无权访问该对象(因此您无法根据 ID 获取 slug,对吧?)
对于任何感兴趣的人,Rails 3.2.13 并使用FriendlyID
【问题讨论】:
-
也许他们使用正则表达式去除参数的 id 部分以进行更快的查找,然后基于此重定向。我还假设他们将 id 保留在 url 中,这样如果问题具有相同的标题,则 url 是唯一的。这也看起来像控制器逻辑。
标签: ruby-on-rails routes friendly-id