我需要将/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()
并重定向,如果找不到记录。