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