如何重定向路由(使用通配符),但如果未找到重定向,则转到默认路由?

时间:2016-06-22 02:56:11

标签: ruby-on-rails ruby-on-rails-4 routes

我需要将/author/john重定向到/about/john。这是我的代码:

  get "/author/:name", to: redirect("/about/%{name}")

问题是,并非author所附带的所有名称都在about中具有等效名称。例如。也许有一个/author/mary,但那里不是/about/mary

使用我当前的代码,输入/author/mary会重定向到/about/mary,然后会出现404错误。

问题

如果重定向的网址无法找到任何内容,是否可以设置重定向路由(如上所述),默认为网址(例如默认为/about)?

1 个答案:

答案 0 :(得分:1)

回答你的问题" no"。除非,您编写一个代码来查询您的数据库以检查是否存在记录(我假设" Mary"其他人来自数据库表)。

但是你可以在控制器中执行此操作。而不是使用.find()方法,会引发ActiveRecord::RecordNotFound错误,然后导致返回404错误,使用find_by_id()where()并在未找到记录时重定向。