Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Rails View Helper Not Inserting HTML into Page

I'm having an issue using a custom helper method in my Rails (3.0) app to output the required html.

I have the following call in my partial view: _label.html.erb

<% display_resource "Diamond", @resource.diamond %>

And in the resource_helper.rb file:

module ResourceHelper
   def display_resource(display_name, value)
      "<tr><td>#{display_name} </td><td>#{value.to_s}%</td></tr>" if value > 0
   end
end

The intended output is:

<tr>
  <td>Diamond</td>
  <td>15%</td>
<tr>

*granted, without the formatting, and the 15 is arbitrary

If I use the <%= ... %> when performing the method call, it'll output the string correctly, but it won't be html (ie I'll see "<tr><td>Diamond </td><td>15%</td></tr>" as opposed to "Diamond 15%")

What am I doing incorrectly?

like image 919
MunkiPhD Avatar asked Sep 30 '10 14:09

MunkiPhD


1 Answers

You need to mark the string returned as "raw" and then use <%= %>

module ResourceHelper
   def display_resource(display_name, value)
      raw("<tr><td>#{display_name} </td><td>#{value.to_s}%</td></tr>") if value > 0 # string wrapped in raw
   end
end
like image 149
Rob Di Marco Avatar answered Sep 23 '22 18:09

Rob Di Marco