Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/54.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails 从InvalidCrossOriginRequest中救援时Rails 4.1中的DoubleRenderError_Ruby On Rails - Fatal编程技术网

Ruby on rails 从InvalidCrossOriginRequest中救援时Rails 4.1中的DoubleRenderError

Ruby on rails 从InvalidCrossOriginRequest中救援时Rails 4.1中的DoubleRenderError,ruby-on-rails,Ruby On Rails,今天我已经升级到Rails 4.1.0。跨站点请求伪造(CSRF)保护现在也包括带有JavaScript响应的GET请求 我在应用程序中有几个被机器人击中的远程获取链接,现在抛出ActionController::InvalidCrossOriginRequest异常 因此,我将另一个rescue_从line添加到应用程序_控制器: rescue_from ActionController::InvalidCrossOriginRequest, with: :render_400 以下是ren

今天我已经升级到Rails 4.1.0。跨站点请求伪造(CSRF)保护现在也包括带有JavaScript响应的GET请求

我在应用程序中有几个被机器人击中的远程获取链接,现在抛出ActionController::InvalidCrossOriginRequest异常

因此,我将另一个rescue_从line添加到应用程序_控制器:

rescue_from ActionController::InvalidCrossOriginRequest, with: :render_400
以下是render_400方法:

def render_400
    render(nothing: true, status: 400) and return
end
我仍然得到了AbstractController::DoubleRenderError,尽管我添加了
并返回了
,正如您在上面看到的


它仅在ActionController::InvalidCrossOriginRequest异常时发生。其他如ActionController::BadRequest,但不会导致AbstractController::DoubleRenderError。

根本原因是在触发错误之前分配了
响应体的某些部分

在调用异常处理程序中的
render
之前,可以尝试清除响应正文

def render_400
  # Clear the previous response body to avoid a DoubleRenderError
  # when redirecting or rendering another view
  self.response_body = nil

  render(nothing: true, status: 400)
end

我遇到Rails 5.1的问题,但此解决方案不起作用:/