ActiveSupport::SafeBuffer not rendered in view?

362 Views Asked by At

Very simple question really, but it's driving me nuts.

I have this method call in a Rails view:

<%= get_image(@document) %>

The method in here returns an object of type ActiveSupport::SafeBuffer. If I call .to_str on it in a console, I see the expected result (just an html img tag). However, when I stick the above code in a view, there's nothing there. Just an empty string.

If I do this:

<%= get_image(@document).to_str %>

in an effort to convert the SafeBuffer into a String object, I see the literal HTML in the page, and not the image tag.

I feel like I'm missing something simple or elementary here. Can anyone point the way? Thanks in advance!

EDIT: since it's been requested, here's what the get_image method looks like:

def get_image(document)
  document[document.type+'.image'].nil? ? nil : document[document.type+'.image'].as_html_safe
end
0

There are 0 best solutions below