gruff send_data

Hi,

for those with experience of Gruff module: suppose I want to send image from server straight to the browser (as example on gruff web site):

  send_data(g.to_blob,             :disposition => 'inline',             :type => 'image/png',             :filename => "gruff.png")

the server seems sending this binary data ok, but I am having trouble to display it properly:

I have tried

<%= link_to_image "gruff.png"%> or <%= image_tag "gruff.png" %>. Neither works. The browser gives a bunch of binary encoding.

Any idea?

Thanks in advance.

Oliver

I just write the file to the disk and serve up the image. i.e: g.write(filename), and then use the image tag helper in the view like you have done.

Shane http://shanesbrain.net

You seem to have everything right except the image_tag:

Try:

image_tag(url_for(:controller => 'my_gruff_controller', :action => 'my_gruff_action'))

What you're trying to achieve is:

http://mydomain.com/my_gruff_controller/my_gruff_action

Does this make sense?

Oliver-23 wrote:

Thanks for the reply. That is certainly one way to go about it. I was able to write a file and read it properly.

Some issues with this approach: I have put this image into a a periodic update section. Write it then read it make the refresh rather obvious. I was hoping send_data will make it visually a little better, but then I guess this might not be the "rails" way of doing this kind of update ... So far, I think I didn't really find a GOOD way to give you live update charting with gruff ...

Oliver

Thanks - by coincidence, I also stumble onto this way of calling ... I believe this will work under normal circumstances ... what if I am calling it this way to update only this <div> section? ... I am not so sure anymore

<%= periodically_call_remote(     :update => "show_graph",     :frequency => 5,     :url => { :action => :gruff_report}) %>

<div id="show_graph"> </div>

Oliver

I used respond_to to do this:

in the controller something like:

respond_to do |format| format.html format.png do send_data(g.to_blob,            :disposition => 'inline',            :type => 'image/png',            :filename => "gruff.png") end

then the route needs to have :controller/:action/:id.:format

then controller/action/id will give you the html (probably a page with an img tag to the actual chart), and controller/action/id.png will return the actual image.

Hope that helps, Andy Delcambre

Presuming the 'gruff_report' action renders the correct html to fill the 'show_graph' element, you should be fine. Bear in mind that gruff graphs can be a chunky download, so refreshing them every 5 seconds might be hard on the server.

Oliver-23 wrote: