MunkiPhD
MunkiPhD

Reputation: 3644

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?

Upvotes: 7

Views: 4641

Answers (1)

Rob Di Marco
Rob Di Marco

Reputation: 44962

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

Upvotes: 10

Related Questions