【问题标题】:Rails Custom Error Pages with Custom Routes带有自定义路由的 Rails 自定义错误页面
【发布时间】:2015-09-10 01:22:20
【问题描述】:

我正在关注本教程: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,但这并没有发生。

【问题讨论】:

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


    【解决方案1】:

    你的

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

    route 似乎正在接受您的自定义错误处理。如果用户去

    /404

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

    你可以做的是把你的错误规则放在顶部,在/:id之前,因为路由会按照它们列出的顺序匹配,但我只是建议不要使用/:id之类的东西,因为它可以不小心捡起东西,比如我们正在处理的东西。使用诸如/posts/:id 之类的描述性内容来确定路线范围。

    【讨论】:

    • 太棒了,谢谢@Adib。那行得通。只需将错误路由移到顶部即可。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-10-07
    • 1970-01-01
    • 2018-10-18
    • 2023-03-24
    • 2011-01-15
    相关资源
    最近更新 更多