Rails 带有自定义路由的自定义错误页面
Rails Custom Error Pages with Custom 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
,但那没有发生。
你的
get '/:id', to: 'blog_posts#show', as: :show_blog_post
route 似乎正在获取您的自定义错误处理。如果用户转到
/404
blog_posts#show
使用参数 id = 404
调用,我猜它正在尝试查找一个 id 为 404 的博客 post,结果是 ActiveRecord::RecordNotFound
异常。
你可以做的是将你的错误规则放在顶部,在 /:id
之前,因为路由是按照它们列出的顺序匹配的,但我只是建议不要使用像 /:id
因为它可能会不小心捡起东西,比如我们正在处理的东西。使用诸如 /posts/:id
.
之类的描述性内容来确定路线范围
我正在学习本教程: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
,但那没有发生。
你的
get '/:id', to: 'blog_posts#show', as: :show_blog_post
route 似乎正在获取您的自定义错误处理。如果用户转到
/404
blog_posts#show
使用参数 id = 404
调用,我猜它正在尝试查找一个 id 为 404 的博客 post,结果是 ActiveRecord::RecordNotFound
异常。
你可以做的是将你的错误规则放在顶部,在 /:id
之前,因为路由是按照它们列出的顺序匹配的,但我只是建议不要使用像 /:id
因为它可能会不小心捡起东西,比如我们正在处理的东西。使用诸如 /posts/:id
.