RoR:如何捕获任何与路线配置不匹配并重定向到主页的路线

时间:2015-03-28 19:16:09

标签: ruby-on-rails ruby redirect

例如在路线中我有这样的代码:

get "profile/:id" => 'profiles#show', as: :profile

root 'articles#index'

但我怎么能抓住这种网址并重定向到家:

我需要捕捉任何不存在的路线。为什么我需要这个?通过SEO规则。例如,如果我输入url.com/?porn or url.com/profile?1&azaza,我就会出现这种情况 - 我将进入我输入这个丑陋网址的页面。但我需要重定向到家,所以任何"黑客"没有在他们的资源上发布非法链接......

这是真的吗?

1 个答案:

答案 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