例如在路线中我有这样的代码:
get "profile/:id" => 'profiles#show', as: :profile
root 'articles#index'
但我怎么能抓住这种网址并重定向到家:
我需要捕捉任何不存在的路线。为什么我需要这个?通过SEO规则。例如,如果我输入url.com/?porn or url.com/profile?1&azaza
,我就会出现这种情况 - 我将进入我输入这个丑陋网址的页面。但我需要重定向到家,所以任何"黑客"没有在他们的资源上发布非法链接......
这是真的吗?
答案 0 :(得分:0)
您需要处理两种不同的案例
对于第一个,您可以在路径末尾添加全局匹配规则。
match '*foo', to: 'articles#index'
然后你应该处理控制器中缺少的资源。
例如
def show
begin
@article = Article.find(params[:id])
rescue
redirect_to root_url
end
end
当然,如果您有多个控制器并且需要在许多地方重复这些控制器,您应该使用更通用的方法。也许在ActiveRecord::RecordNotFound
ApplicationController