从Rails中的routes.rb内重定向

时间:2016-03-13 22:55:17

标签: ruby-on-rails url redirect routing routes

我正在为数据库中的记录创建名称更改历史记录。因此,如果有人更改了他们拥有的内容的名称,旧的URL仍然有用。

我正在尝试这样的事情:

textWrapper

此路线的两种完成方式:

  1. 工作:它什么都没找到,返回false,所以路线执行顺序继续下去。

  2. 不工作:找到一些东西并重定向到路线历史中的最新名称。

  3. 返回重定向latest_url根本没有重定向 - 任何建议?

1 个答案:

答案 0 :(得分:0)

由于针对每条路线的测试在第一场比赛中停止,因此有两条路线更简单:

# legacy name support
get '/:id', to: redirect(latest_url), constraints: lambda { |request|
  urls = ['a', 'b', 'c']
  urls.include? request.params[:id]
}

# latest and greatest
get '/:id', to: "services#show", as: 'show_service'
PS:我还建议这很复杂,足以保证它自己的类响应matches?而不是内联lambda,请参阅http://guides.rubyonrails.org/routing.html#advanced-constraints

PPS:根据用例的复杂程度,值得一看 friendly_id gem及 history 模块。