AnApprentice
AnApprentice

Reputation: 110950

Rails, Why does this helper not output HTML, but rather HTML in quotes?

I have the following helper in my application_helper.rb file:

  def topmenu
    pages = {
      "projects" => projects_path,
      "photos" => photos_path
    }
    pages.map do |key, value|
      classnames = %( class="current") if controller.controller_name == key
      "<li#{classnames}>#{link_to(key, value)}</li>"
    end
  end

Then in my application.html.erb file I have:

<%= topmenu %>

For some reason, the page is generating showing the HTML from the above helper as TEXT, not HTML. Not sure why? thx

Upvotes: 8

Views: 5675

Answers (2)

Tsung.W
Tsung.W

Reputation: 289

It makes the code more clean? Isn't it? And you can do more thing in the help function(because it is not only a html)

Upvotes: -2

Eimantas
Eimantas

Reputation: 49344

I presume you're running rails3. Add .html_safe method call before returning the string:

"<li#{classnames}>#{link_to(key, value)}</li>".html_safe

Upvotes: 25

Related Questions