我有一个我为一个旧网站构建的rails应用程序,我从另一个cms转换(用非rails语言,呵呵)。大多数旧页面使用routes.rb映射到新页面。但仍然有一些404。
我是一个rails newb所以我问是否有任何先进的方法来处理404s。例如,如果我用我的旧语言编程,我会这样做:
是否有任何你知道的宝石/插件或教程可以处理这样的事情,如果它甚至可能的话。或者你能从高层次解释如何做到这一点吗?我不需要完整的代码示例,只需向正确的方向推进。
PS。这是一个使用单个内容模型的简单rails 3应用程序。
答案 0 :(得分:7)
将它放在路线中(在你拥有的每一条路线之后,这将捕获每个网址)
match '*url' => 'errors#routing'
现在在路由操作中的错误控制器中,您可以实现所需的任何奇特逻辑,并始终呈现视图(您可能希望将:status => 404
添加到render
调用)。请求的网址将在控制器中显示为params[:url]
。
答案 1 :(得分:0)
有一种丑陋的方式:
render :file => "#{RAILS_ROOT}/public/404.html", :layout => false, :status => 404
也许有人可以找到更好的解决方案。