我正在关注本教程: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
,但这种情况不会发生。
答案 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
的描述来描述路线。