【问题标题】:Missing template error - when layout exists缺少模板错误 - 布局存在时
【发布时间】:2017-08-28 16:49:12
【问题描述】:

无论出于何种原因,我都无法弄清楚为什么我不断收到此错误。在一个新鲜的日志上显示8次,这很奇怪。

我在本地设置的生产环境中运行 WEBrick。但是我在 AWS 上运行 Puma 的实际生产环境中收到了同样的错误。

ruby 2.1.4p265
rails 4.2.7.1

堆栈跟踪

Error during failsafe response: Missing template errors/internal_server_error, 
application/internal_server_error with {:locale=>[:en], :formats=>[:png], :variants=>[], :handlers=>[:erb, :builder, :raw, :ruby]}. Searched in:
  * "~/Rails/ReturnLabel/return_label/app/views"
  * "~/.rvm/gems/ruby-2.1.4@return_disposition/gems/devise-3.5.5/app/views"

应用程序/视图/错误

$ ls app/views/errors/
./                              _error.html.erb                 internal_server_error.html.erb  no_label.html.erb               unsupported_country.html.erb
../                             expired_order.html.erb          invalid.html.erb                not_found.html.erb

errors_controller.rb

class ErrorsController < ApplicationController
  def expired_order
    @error = :expired_order
    render(status: 503)
  end
  def unsupported_country
    @error = :unsupported_country
    render(status: 503)
  end
  def invalid
    @error = :invalid
    render(status: 400)
  end
  def not_found
    @error = :not_found
    render(status: 404)
  end
  def internal_server_error
    @error = :internal_server_error
    render(status: 500)
  end
  def no_label
    @error = :no_label
    render(status: 503)
  end
end

routes.rb

 match '/404', to: 'errors#not_found', as: 'not_found', via: :all
 match '/500', to: 'errors#internal_server_error', as: 'internal_server_error', via: :all
 match '/unsupported_country', to: 'errors#unsupported_country', via: :all
 match '/expired_order', to: 'errors#expired_order', via: :all
 match '/invalid', to: 'errors#invalid', via: :all
 match '/no_label', to: 'errors#no_label', via: :all
 ...
 # END OF FILE
 match '*path', to: 'errors#not_found', via: :all

查看代码

internal_server_error.html.erb

<header class="header-span-single-line styled">
  <div class="text-center animated shake">
    <span><%= t('error.header.title') %></span>
    <br>
  </div>
</header>
<div class="container animated bounceInUp">
  <div class="jumbotron">
    <div class="container">
      <%= render 'error' %>
    </div>
  </div>
</div>

_error.html.erb

<% error_text = t("error.#{@error}") %>
<h1><%= error_text[:title] %></h1>
<p class="text-white"><%= error_text[:body] %></p>
<hr/>
<p><strong><%= t('error.contact.title') %></strong></p>
<ul class="list-padding">
  <li class="list-unstyled">
    <p class="cs-p"><%= t('error.contact.phone') %></p>
  </li>
  <li class="list-unstyled">
    <p class="cs-p"><%= t('error.contact.email.title') %>
      <a class="branded-link branded-link-dark" target="_blank" href="<%= t('error.contact.email.href') %>"><%= t('error.contact.email.value') %></a>
    </p>
  </li>
</ul>
<%= link_to t('error.button'), :root, :class => 'btn btn-warning btn-lg btn-dark' %>

不知道还能在这里做什么。我错过了什么?

【问题讨论】:

  • 很好奇,为什么格式是png
  • 说实话我不知道!
  • 这是在某处的视图中被渲染调用的吗?您可以发布调用它的视图代码吗?另外,之前有没有用,现在坏了?
  • 我正在主视图中渲染部分内容。我已经包含了两个文件查看代码。好吧,回顾一下我的错误跟踪器(bugsnag),我注意到过去一个月一直在发生这种情况(猜想获得更多的电子邮件警报会很好),但无论它过去是否有效,现在都不起作用。似乎无法追踪发生了什么变化,或者是什么破坏了它。

标签: ruby-on-rails ruby actionview


【解决方案1】:

您在获取 png 图像时出现 500 错误。因此,您的应用程序尝试重定向到您的 internal_server_error 操作,但找不到 internal_server_error.png 文件。

在您的视图中搜索过时的 img 标签或 image_tag 调用,并在您的 CSS 中搜索带有 png 图像的 url(),然后删除或更新它们。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-02-28
    • 1970-01-01
    • 2015-09-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多