【问题标题】:how to render rails static 404, 500 error pages without site layout?如何在没有站点布局的情况下呈现 rails 静态 404、500 错误页面?
【发布时间】:2012-04-06 04:16:50
【问题描述】:

我正在使用 rails 3。在生产中,rails 可以很好地处理异常并从我的公共目录加载我的静态 404.html、500.html 等文件。但是,它将这些文件加载​​到我的 layouts/application.html.erb 文件中。我正在寻找一种方法来指示 rails 在不使用我的应用程序布局的情况下加载这些文件 - 例如只提供静态 html 文件,仅此而已。实现这一目标的最佳方法是什么?

谢谢!

【问题讨论】:

  • 据我所知,rails 默认加载这些错误页面而不加载 layouts/application.html.erb,如果我错了,请纠正我
  • 我在 heroku 上托管,它正在我的应用布局中加载这些文件...

标签: ruby-on-rails ruby-on-rails-3


【解决方案1】:

render :file => 'public/404.html', :status => :not_found, :layout => false

【讨论】:

  • 它必须是 :status => :not_found 而不是 :status => 'not_found' 这让我很困惑,但它现在可以工作了。谢谢!
  • @thedanotto 在你的控制器中的某处。
【解决方案2】:

对于在 Rails 框架内工作的高级方法。更新您的 routes 文件:

get "/404", to: "errors#error_404"
get "/500", to: "errors#error_500"

添加一个ErrorsController

layout false

def error_404
  render status: 404
end

def error_500
  render status: 500
end

然后在app/views/errors/ 中添加您的error_404.erberror_500.erb 文件以及snazy image 和搜索栏。

More info here.

【讨论】:

    猜你喜欢
    • 2011-05-23
    • 1970-01-01
    • 2013-04-03
    • 1970-01-01
    • 1970-01-01
    • 2012-04-09
    • 2020-10-27
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多