Unescaping HTML string

escaping, html

Solution

As you seem to have noticed, there are two things you need to take care of:

- Unescaping the HTML entities

- Printing the raw html in your view

For number 2 `<%= raw ... %>` should work fine.

For number 1 `CGI.unescapeHTML` was the right idea, but I don't think it recognizes all HTML entities so I would recommend taking a look at the HTML Entites gem

You can also try and use the simple_format helper method, but I think you are going to have to pass it some options for it to allow the `<iframe>` tag

also I would strongly suggest moving your `unescaping` logic into a helper method.

Problem

I have the inherited the following string (I can do nothing about the format): ``` &lt;iframe \n class=\"some_class\"\n type=\"text/html\" \n src=\"/embed/iframe_content.html?id=tsqA5D7_z10\" \n width=\"960\" \n height=\"593\" \n marginwidth=\"0\" \n marginheight=\"0\" \n frameborder=\"0\"&gt;\n&lt;/iframe&gt; ``` I am rendering it in an erb template like this: ``` <%= the_string %> ``` At the moment it renders as text like this: ``` &lt;iframe class="some_class" type="text/html" src="/embed/iframe_content.html?id=tsqA5D7_z10" width="960" height="593" marginwidth="0" marginheight="0" frameborder="0"&gt;&lt;/iframe&gt; ``` I need to render it as HTML. I have tried the following: - `<%= the_string.html_safe %>` # Renders the string unchanged - `<%= CGI.unescapeHTML(the_string) %>` # Errors with a Type Error 'can't dup NilClass' - `<%= CGI.unescapeHTML(the_string).html_safe %>` # Errors with a Type Error 'can't dup NilClass' - `<%= raw the_string %>` # Renders the string unchanged How can I render this string as HTML?

Original source