Rails定制错误页面与自定义路由

时间:2015-06-24 02:07:11

标签: ruby-on-rails ruby error-handling routes

我正在关注本教程:http://wearestac.com/blog/dynamic-error-pages-in-rails

但是,在我的路线文件中,我有两个自定义路线:

get '/blog',        to: 'blog_posts#index', as: :blog
get '/:id',         to: 'blog_posts#show', as: :show_blog_post

当我转到不存在的页面时,它不会重定向到错误页面。相反,它给了我Completed 404 Not Found. Error during failsafe response: ActiveRecord::RecordNotFound

自定义路由在某种程度上不会使错误页面起作用。当我删除自定义路线时,一切正常。

如何让我的错误页面与此一起使用?我会认为返回404的任何内容都会重定向到ErrorsController,但这种情况不会发生。

1 个答案:

答案 0 :(得分:1)

你的

get '/:id', to: 'blog_posts#show', as: :show_blog_post

路由似乎正在提升您的自定义错误处理。如果用户前往

/404

使用参数blog_posts#show调用id = 404,我猜它正在尝试查找ID为404的博客帖子,导致ActiveRecord::RecordNotFound异常。

您可以做的是将错误规则放在/:id之前的顶部,因为路线按照列出的顺序匹配,但我建议不要使用{{1}之类的内容因为它可能会意外地接受,就像我们正在处理的那样。使用类似/:id的描述来描述路线。