3

我在 Rails 3 中使用 render_component,https: //github.com/vhochstein/render_component。

当我的控制器返回 304 结果时,render_component 失败并出现以下错误:

undefined method `redirect_url' for []:Array

在这条线上:

response = component_response(options, true)[2]

** if response.redirect_url **
  redirect_to response.redirect_url
else
  render :text => response.body, :status => response.status
end

原因是因为controller.dispatch(action, request)(result of component_response) 返回一个数组:

[304, {"ETag"=>"....", "Cache-Control"=>"max-age=0, private, must-revalidate"}, []]

而不是看起来像这样的 200 结果:

[200, {"Content-Type"=>"text/html; charset=utf-8", "ETag"=>"\"...\"", "Cache-Control"=>"max-age=0, private, must-revalidate }, #<ActionDispatch::Response:0x007f8eee1918b8 @writer=...

试图request_env["Cache-Control"] = "no-store, no-cache, must-revalidate"作为标题添加到ActionDispatch::Request但没有运气。我检查了控制器接收到的标题。

4

0 回答 0