如何重定向路线(使用通配符),但如果找不到重定向,请默认



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

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

问题是,并非author上附加的所有名称在about中具有等效。例如。也许有一个/author/mary,但没有/about/mary

使用我当前的代码,在/author/mary中键入将重定向到/about/mary,然后将其拉出404错误。

问题

如果重定向URL找不到任何东西,是否可以有一个重定向路由(如上图),默认为URL(例如,默认值为/about)?

回答您的问题"否"。除非您编写一个查询数据库的代码以检查是否存在记录(我认为"玛丽"和其他来自数据库表)。

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

最新更新