In rails, can I access response.body in a action before it returns?
Say I want to do some final string replacements before it returns, can I get access to response.body i.e. the response that the view returns?
Try after_filter in your controller.
You should be able to edit your response.body from there. For me, I needed to remove some ASCII characters in the xml hence I did this.
after_filter :sanitize_xml
def sanitize_xml
#clean the response body by accessing response.body
You can write a rack middleware to do such kind of replacements. Code for the rack is.
module Dump
require 'rack'
class Response
def initialize(app)
@app=app
end
def call(env)
[email protected](env)
res.body #change this and but also update res.length and header["Content-Length"]
return res
end
end
end
include it in some file, lets call it dump_response.rb in RAILS_ROOT/lib folder. And line
use Dump::Response
in config.ru
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With