Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Rail 3 - flash messages escaped, best way to unescape

Now that Rails 3 escapes all evaluated elements in views (good), but it is also escaping my flash message. And I like the occasional link in my flash message (or strong or emphasis).

A flash message:

flash[:notice] = "<strong>Bob</strong> was sucessfully checked in.<br />If you made a mistake, you can <a href=\"/scouts/#{@scout.id}/check_out\">check out Bob</a> to undo."

Becomes garbled, escaped, unusable.

I can unescape the message using raw:

- flash.each do |name, msg|
  = content_tag :div, raw(msg)

But now every flash message is unescaped.

How can I unescape just a singe flash message? or just parts of the message?

like image 791
Karl Avatar asked Sep 21 '10 22:09

Karl


1 Answers

try html_safe in your controller for each notice you want escaped. This will allow you to remove the raw function from the view and unescape only the ones you want in the controller.

flash[:notice] = "test<br/>test".html_safe
like image 103
johnmcaliley Avatar answered Nov 13 '22 05:11

johnmcaliley