如何找出我的 Rails 控制器返回 500 错误代码的原因?

How can I find out why my Rails controller is returning a 500 error code?

在测试中,对 session.get root_path 的调用返回 500 错误代码,即 assert session.response.success? 失败。

这曾经很好,很明显我已经坏了一些东西,但由于以下原因我无法缩小原因:

换句话说,实际上似乎没有任何问题,但仍然有 500 HTTP 响应。

注意:我在控制器操作的前面设置了 status = :success(或其他一些值),然后将其作为 status: status 传递给渲染。这是因为我正在根据会话中的某些内容检测到可能的未授权访问。

好吧,我不注意了。测试的方法叫#success?,但响应代码符号叫:ok.

公平地说,其他 Rails 测试方法/响应代码符号倾向于直接映射。

澄清:

所以根据 Max 的评论,这里的要点是 #success? returns 对于任何 200 系列“快乐”HTTP 代码都是正确的。不过,它是一个总称,因此不能传递给 render

我已将相关代码更新为更像:

status = :ok  # This was :success
if redirecting_from_access_denied?
  status = :unauthorized
end