如何拯救在rails中找不到404页面?

Posted

技术标签:

【中文标题】如何拯救在rails中找不到404页面?【英文标题】:How to rescue page not found 404 in rails? 【发布时间】:2021-11-20 01:03:21 【问题描述】:

如果用户在 Rails 中添加了错误的 url,如何挽救页面未找到。如果 url 无效,我希望在公用文件夹中显示 404 页面。怎么做?我正在浏览它,但找不到解决方案。我尝试了很多方法来解决这个问题,但它们似乎并没有奏效。 我卡在这里,请帮忙。

【问题讨论】:

【参考方案1】:

Rails 4

的解决方案

routes.rb

get '*unmatched_route', to: 'application#not_found'

application_controller.rb上:

def not_found
  # Your exception handling code here
end

【讨论】:

感谢您的回答和此评论 (***.com/questions/19368799/…),我能够“捕获所有未找到的错误”。 ^_^【参考方案2】:

我找到了解决方案,检查一下 => http://techoctave.com/c7/posts/36-rails-3-0-rescue-from-routing-error-solution(很好的解决方案)

routes.rb:

# at the end of you routes.rb
match '*a', :to => 'errors#routing', via: :get

errors_controller.rb:

class ErrorsController < ApplicationController
  def routing
    render_404
  end
end

应用程序.rb:

rescue_from ActionController::RoutingError, :with => :render_404

 private
  def render_404(exception = nil)
    if exception
        logger.info "Rendering 404: #exception.message"
    end

    render :file => "#Rails.root/public/404.html", :status => 404, :layout => false
  end

【讨论】:

如果这个句柄可以通用来处理其他 mime 类型,那就太好了。像 non-exist.js 或 does-not-exists.xml @Ismael 你找到关于 js 或 xml 格式文件的东西了吗? 我不再参与这个问题。不过我觉得跟respond_to函数有关,很容易理解,看看吧。

以上是关于如何拯救在rails中找不到404页面?的主要内容,如果未能解决你的问题,请参考以下文章

错误 404。在 nopCommerce 4.00 中找不到请求的页面 (/en/index.php)

在 IIS 7.5 中托管的 Web Api 中找不到 HTTP 404 页面

在 Rails 4 生产环境中找不到资产的 404 错误

如果在 django 的 urls.py 中找不到,则将任何 url 重定向到 404.html

Ruby Rails在HTTP GET请求中找不到404

在我的本地主机 Rails 上查看我的 404 页面