

`erase_render_results` は、 Rails3 で、[deprecated
になってしまったよう](http://apidock.com/rails/ActionController/Base/erase_render_results)ですが、

> > Method deprecated or moved This method is deprecated or moved on the  
>  latest stable version. The last existing version (v2.3.8) is shown  
>  here.
>
> erase_render_results(#:nodoc:) protected Clears the rendered results,  
>  allowing for another render to be performed.

Rails4 にて、同様に render を一度クリアしたい場合、どのようにすればよいでしょうか?


CC BY-SA 3.0
2015-01-15T01:29:41.713
4579
2015-01-15T02:21:28.567
2015-01-15T02:07:09.453
4978
2602
question
ruby-on-rails
Rails4に ActionController#erase_render_results に相当する機能はありますか?


試してはいませんが、こちらのページに回避策が載っていました。

<http://www.dixis.com/?p=488>

[code]

    def reset_invocation_response
      erase_render_results
      response.instance_variable_set :@header, Rack::Utils::HeaderHash.new(::ActionController::Response::DEFAULT_HEADERS.merge("cookie" => []))
    end
    
    def reset_invocation_response
      self.instance_variable_set(:@_response_body, nil)
      response.instance_variable_set :@header, Rack::Utils::HeaderHash.new("cookie" => [], 'Content-Type' => 'text/html')
    end
    
[/code]

が、結構強引なハックに見えるので、この先も動き続ける保証はないかも。。。

今後も保守し続けるアプリケーションであれば、 `erase_render_results` に依存しない実装方法を考えてみた方が良いかもしれません。

`erase_render_results`
を使っている理由や目的を書いて、このメソッドを使わずに済む「レールに乗った解決策はないか？」と質問してみると、もっといい回答が得られるかもしれませんね。


CC BY-SA 3.0
2015-01-15T02:21:28.567
4581
2015-01-15T02:21:28.567
85
4579
answer