我需要将/author/john
重定向到/about/john
。这是我的代码:
get "/author/:name", to: redirect("/about/%{name}")
问题是,并非author
所附带的所有名称都在about
中具有等效名称。例如。也许有一个/author/mary
,但那里不是/about/mary
。
使用我当前的代码,输入/author/mary
会重定向到/about/mary
,然后会出现404错误。
问题
如果重定向的网址无法找到任何内容,是否可以设置重定向路由(如上所述),默认为网址(例如默认为/about
)?
答案 0 :(得分:1)
回答你的问题" no"。除非,您编写一个代码来查询您的数据库以检查是否存在记录(我假设" Mary"其他人来自数据库表)。
但是你可以在控制器中执行此操作。而不是使用.find()
方法,会引发ActiveRecord::RecordNotFound
错误,然后导致返回404错误,使用find_by_id()
或where()
并在未找到记录时重定向。